亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? surf.java

?? Jake2是一個Java 3D游戲引擎.
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
		gl.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);		GL_EnableMultitexture( false );		DrawTextureChains();		R_DrawSkyBox();		R_DrawTriangleOutlines();	}	final byte[] fatvis = new byte[Defines.MAX_MAP_LEAFS / 8];	/**	 * R_MarkLeaves	 * Mark the leaves and nodes that are in the PVS for the current	 * cluster	 */	void R_MarkLeaves()	{		if (r_oldviewcluster == r_viewcluster && r_oldviewcluster2 == r_viewcluster2 && r_novis.value == 0 && r_viewcluster != -1)			return;		// development aid to let you run around and see exactly where		// the pvs ends		if (gl_lockpvs.value != 0)			return;		r_visframecount++;		r_oldviewcluster = r_viewcluster;		r_oldviewcluster2 = r_viewcluster2;		int i;		if (r_novis.value != 0 || r_viewcluster == -1 || r_worldmodel.vis == null)		{			// mark everything			for (i=0 ; i<r_worldmodel.numleafs ; i++)				r_worldmodel.leafs[i].visframe = r_visframecount;			for (i=0 ; i<r_worldmodel.numnodes ; i++)				r_worldmodel.nodes[i].visframe = r_visframecount;			return;		}		byte[] vis = Mod_ClusterPVS(r_viewcluster, r_worldmodel);		int c;		// may have to combine two clusters because of solid water boundaries		if (r_viewcluster2 != r_viewcluster)		{			// memcpy (fatvis, vis, (r_worldmodel.numleafs+7)/8);			System.arraycopy(vis, 0, fatvis, 0, (r_worldmodel.numleafs+7) >> 3);			vis = Mod_ClusterPVS(r_viewcluster2, r_worldmodel);			c = (r_worldmodel.numleafs + 31) >> 5;			c <<= 2;			for (int k=0 ; k<c ; k+=4) {				fatvis[k] |= vis[k];				fatvis[k + 1] |= vis[k + 1];				fatvis[k + 2] |= vis[k + 2];				fatvis[k + 3] |= vis[k + 3];			}			vis = fatvis;		}		mnode_t node;		mleaf_t leaf;		int cluster;		for ( i=0; i < r_worldmodel.numleafs; i++)		{			leaf = r_worldmodel.leafs[i];			cluster = leaf.cluster;			if (cluster == -1)				continue;			if (((vis[cluster>>3] & 0xFF) & (1 << (cluster & 7))) != 0)			{				node = (mnode_t)leaf;				do				{					if (node.visframe == r_visframecount)						break;					node.visframe = r_visframecount;					node = node.parent;				} while (node != null);			}		}	}	/*	=============================================================================	  LIGHTMAP ALLOCATION	=============================================================================	*/	/**	 * LM_InitBlock	 */	void LM_InitBlock()	{		Arrays.fill(gl_lms.allocated, 0);	}	/**	 * LM_UploadBlock	 * @param dynamic	 */	void LM_UploadBlock( boolean dynamic )	{		int texture = ( dynamic ) ? 0 : gl_lms.current_lightmap_texture;		GL_Bind( gl_state.lightmap_textures + texture );		gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);		gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);		gl_lms.lightmap_buffer.rewind();		if ( dynamic )		{			int height = 0;			for (int i = 0; i < BLOCK_WIDTH; i++ )			{				if ( gl_lms.allocated[i] > height )					height = gl_lms.allocated[i];			}			gl.glTexSubImage2D( GL11.GL_TEXTURE_2D, 							  0,							  0, 0,							  BLOCK_WIDTH, height,							  GL_LIGHTMAP_FORMAT,							  GL11.GL_UNSIGNED_BYTE,							  gl_lms.lightmap_buffer );		}		else		{			gl.glTexImage2D( GL11.GL_TEXTURE_2D, 						   0, 						   gl_lms.internal_format,						   BLOCK_WIDTH, BLOCK_HEIGHT, 						   0, 						   GL_LIGHTMAP_FORMAT, 						   GL11.GL_UNSIGNED_BYTE, 						   gl_lms.lightmap_buffer );			if ( ++gl_lms.current_lightmap_texture == MAX_LIGHTMAPS )				Com.Error( Defines.ERR_DROP, "LM_UploadBlock() - MAX_LIGHTMAPS exceeded\n" );							//debugLightmap(gl_lms.lightmap_buffer, 128, 128, 4);		}	}	/**	 * LM_AllocBlock	 * @param w	 * @param h	 * @param pos	 * @return a texture number and the position inside it	 */	boolean LM_AllocBlock (int w, int h, pos_t pos)	{		int best = BLOCK_HEIGHT;		int x = pos.x; 		int y = pos.y;		int best2;		int i, j;		for (i=0 ; i<BLOCK_WIDTH-w ; i++)		{			best2 = 0;			for (j=0 ; j<w ; j++)			{				if (gl_lms.allocated[i+j] >= best)					break;				if (gl_lms.allocated[i+j] > best2)					best2 = gl_lms.allocated[i+j];			}			if (j == w)			{	// this is a valid spot				pos.x = x = i;				pos.y = y = best = best2;			}		}		if (best + h > BLOCK_HEIGHT)			return false;		for (i=0 ; i<w ; i++)			gl_lms.allocated[x + i] = best + h;		return true;	}	/**	 * GL_BuildPolygonFromSurface	 */	void GL_BuildPolygonFromSurface(msurface_t fa)	{		// reconstruct the polygon		medge_t[] pedges = currentmodel.edges;		int lnumverts = fa.numedges;		int vertpage = 0;		//		// draw texture		//		// poly = Hunk_Alloc (sizeof(glpoly_t) + (lnumverts-4) * VERTEXSIZE*sizeof(float));		glpoly_t poly = Polygon.create(lnumverts);		poly.next = fa.polys;		poly.flags = fa.flags;		fa.polys = poly;		int lindex;		float[] vec;		medge_t r_pedge;		float s, t;		for (int i=0 ; i<lnumverts ; i++)		{			lindex = currentmodel.surfedges[fa.firstedge + i];			if (lindex > 0)			{				r_pedge = pedges[lindex];				vec = currentmodel.vertexes[r_pedge.v[0]].position;			}			else			{				r_pedge = pedges[-lindex];				vec = currentmodel.vertexes[r_pedge.v[1]].position;			}			s = Math3D.DotProduct (vec, fa.texinfo.vecs[0]) + fa.texinfo.vecs[0][3];			s /= fa.texinfo.image.width;			t = Math3D.DotProduct (vec, fa.texinfo.vecs[1]) + fa.texinfo.vecs[1][3];			t /= fa.texinfo.image.height;			poly.x(i, vec[0]);			poly.y(i, vec[1]);			poly.z(i, vec[2]);						poly.s1(i, s);			poly.t1(i, t);			//			// lightmap texture coordinates			//			s = Math3D.DotProduct (vec, fa.texinfo.vecs[0]) + fa.texinfo.vecs[0][3];			s -= fa.texturemins[0];			s += fa.light_s*16;			s += 8;			s /= BLOCK_WIDTH*16; //fa.texinfo.texture.width;			t = Math3D.DotProduct (vec, fa.texinfo.vecs[1]) + fa.texinfo.vecs[1][3];			t -= fa.texturemins[1];			t += fa.light_t*16;			t += 8;			t /= BLOCK_HEIGHT*16; //fa.texinfo.texture.height;			poly.s2(i, s);			poly.t2(i, t);		}	}	/**	 * GL_CreateSurfaceLightmap	 */	void GL_CreateSurfaceLightmap(msurface_t surf)	{		if ( (surf.flags & (Defines.SURF_DRAWSKY | Defines.SURF_DRAWTURB)) != 0)			return;		int smax = (surf.extents[0]>>4)+1;		int tmax = (surf.extents[1]>>4)+1;				pos_t lightPos = new pos_t(surf.light_s, surf.light_t);		if ( !LM_AllocBlock( smax, tmax, lightPos ) )		{			LM_UploadBlock( false );			LM_InitBlock();			lightPos = new pos_t(surf.light_s, surf.light_t);			if ( !LM_AllocBlock( smax, tmax, lightPos ) )			{				Com.Error( Defines.ERR_FATAL, "Consecutive calls to LM_AllocBlock(" + smax +"," + tmax +") failed\n");			}		}				// kopiere die koordinaten zurueck		surf.light_s = lightPos.x;		surf.light_t = lightPos.y;		surf.lightmaptexturenum = gl_lms.current_lightmap_texture;				IntBuffer base = gl_lms.lightmap_buffer;		base.position(surf.light_t * BLOCK_WIDTH + surf.light_s);		R_SetCacheState( surf );		R_BuildLightMap(surf, base.slice(), BLOCK_WIDTH);	}	lightstyle_t[] lightstyles;	private final IntBuffer dummy = BufferUtils.createIntBuffer(128*128);	/**	 * GL_BeginBuildingLightmaps	 */	void GL_BeginBuildingLightmaps(model_t m)	{		// static lightstyle_t	lightstyles[MAX_LIGHTSTYLES];		int i;		// init lightstyles		if ( lightstyles == null ) {			lightstyles = new lightstyle_t[Defines.MAX_LIGHTSTYLES];			for (i = 0; i < lightstyles.length; i++)			{				lightstyles[i] = new lightstyle_t();							}		}		// memset( gl_lms.allocated, 0, sizeof(gl_lms.allocated) );		Arrays.fill(gl_lms.allocated, 0);		r_framecount = 1;		// no dlightcache		GL_EnableMultitexture( true );		GL_SelectTexture( GL_TEXTURE1);		/*		** setup the base lightstyles so the lightmaps won't have to be regenerated		** the first time they're seen		*/		for (i=0 ; i < Defines.MAX_LIGHTSTYLES ; i++)		{			lightstyles[i].rgb[0] = 1;			lightstyles[i].rgb[1] = 1;			lightstyles[i].rgb[2] = 1;			lightstyles[i].white = 3;		}		r_newrefdef.lightstyles = lightstyles;		if (gl_state.lightmap_textures == 0)		{			gl_state.lightmap_textures = TEXNUM_LIGHTMAPS;		}		gl_lms.current_lightmap_texture = 1;		/*		** if mono lightmaps are enabled and we want to use alpha		** blending (a,1-a) then we're likely running on a 3DLabs		** Permedia2.  In a perfect world we'd use a GL_ALPHA lightmap		** in order to conserve space and maximize bandwidth, however 		** this isn't a perfect world.		**		** So we have to use alpha lightmaps, but stored in GL_RGBA format,		** which means we only get 1/16th the color resolution we should when		** using alpha lightmaps.  If we find another board that supports		** only alpha lightmaps but that can at least support the GL_ALPHA		** format then we should change this code to use real alpha maps.		*/				char format = gl_monolightmap.string.toUpperCase().charAt(0);				if ( format == 'A' )		{			gl_lms.internal_format = gl_tex_alpha_format;		}		/*		** try to do hacked colored lighting with a blended texture		*/		else if ( format == 'C' )		{			gl_lms.internal_format = gl_tex_alpha_format;		}		else if ( format == 'I' )		{			gl_lms.internal_format = GL11.GL_INTENSITY8;		}		else if ( format == 'L' ) 		{			gl_lms.internal_format = GL11.GL_LUMINANCE8;		}		else		{			gl_lms.internal_format = gl_tex_solid_format;		}		/*		** initialize the dynamic lightmap texture		*/		GL_Bind( gl_state.lightmap_textures + 0 );		gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);		gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);		gl.glTexImage2D( GL11.GL_TEXTURE_2D, 					   0, 					   gl_lms.internal_format,					   BLOCK_WIDTH, BLOCK_HEIGHT, 					   0, 					   GL_LIGHTMAP_FORMAT, 					   GL11.GL_UNSIGNED_BYTE, 					   dummy );	}	/**	 * GL_EndBuildingLightmaps	 */	void GL_EndBuildingLightmaps()	{		LM_UploadBlock( false );		GL_EnableMultitexture( false );	}		/*	 * new buffers for vertex array handling	 */	static FloatBuffer globalPolygonInterleavedBuf = Polygon.getInterleavedBuffer();	static FloatBuffer globalPolygonTexCoord1Buf = null;	static {	 	globalPolygonInterleavedBuf.position(Polygon.STRIDE - 2);	 	globalPolygonTexCoord1Buf = globalPolygonInterleavedBuf.slice();		globalPolygonInterleavedBuf.position(0);	 };	//ImageFrame frame;	//	void debugLightmap(byte[] buf, int w, int h, float scale) {//		IntBuffer pix = ByteBuffer.wrap(buf).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer();//		//		int[] pixel = new int[w * h];//		//		pix.get(pixel);//		//		BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_4BYTE_ABGR);//		image.setRGB(0,  0, w, h, pixel, 0, w);//		AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(scale, scale), AffineTransformOp.TYPE_NEAREST_NEIGHBOR);//		BufferedImage tmp = op.filter(image, null);//		//		if (frame == null) {//			frame = new ImageFrame(null);//			frame.show();//		} //		frame.showImage(tmp);//		//	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情欧美一区二区三区在线观看| 911精品国产一区二区在线| 91久久一区二区| 欧美老年两性高潮| 欧美精品一区二区三区在线播放| 国产婷婷色一区二区三区 | 美脚の诱脚舐め脚责91| 国产一区二区毛片| 91福利小视频| 日韩亚洲欧美在线观看| 国产精品大尺度| 喷白浆一区二区| av在线播放一区二区三区| 欧美高清性hdvideosex| 国产精品色哟哟| 日本一区中文字幕 | 亚洲自拍都市欧美小说| 国产制服丝袜一区| 欧美日韩综合一区| 欧美国产日韩一二三区| 奇米影视7777精品一区二区| 成人动漫精品一区二区| 日韩一区二区麻豆国产| 亚洲男人的天堂网| 国产一区在线精品| 91超碰这里只有精品国产| 自拍偷拍亚洲综合| 韩国av一区二区三区| 欧美日韩激情一区二区| 日韩毛片精品高清免费| 国内精品国产三级国产a久久| 欧美色爱综合网| 国产精品欧美一区喷水| 美女久久久精品| 欧美色欧美亚洲另类二区| 中文欧美字幕免费| 久久精品国产77777蜜臀| 欧日韩精品视频| 成人免费小视频| 激情综合色播五月| 7777女厕盗摄久久久| 一区二区三区四区蜜桃| 成人午夜视频免费看| 精品国产一区二区三区av性色| 亚洲国产精品一区二区久久| 91在线精品一区二区三区| 久久久国产精华| 国产又黄又大久久| 欧美va亚洲va在线观看蝴蝶网| 亚洲h在线观看| 在线看日韩精品电影| 中文字幕一区二区三区四区不卡 | 国产精品国模大尺度视频| 国内精品伊人久久久久av一坑| 在线不卡中文字幕播放| 一区二区三区中文字幕| heyzo一本久久综合| 国产无一区二区| 国产老女人精品毛片久久| 精品福利一区二区三区免费视频| 免费欧美在线视频| 日韩欧美一区二区在线视频| 日日摸夜夜添夜夜添国产精品| 欧美性生活久久| 亚洲一区二区三区在线| 在线亚洲人成电影网站色www| 18欧美亚洲精品| 9i在线看片成人免费| 国产精品色一区二区三区| 成人激情文学综合网| 欧美国产日韩一二三区| 成人黄色av电影| 国产精品免费av| www.av精品| 自拍偷自拍亚洲精品播放| 91蝌蚪porny九色| 亚洲欧美日韩国产一区二区三区| 色综合久久久久综合| 亚洲黄色性网站| 欧美三级电影一区| 亚洲大片在线观看| 欧美精品一级二级| 久久精品国内一区二区三区| 久久伊99综合婷婷久久伊| 懂色av一区二区三区免费观看| 日本一区二区三区视频视频| 国产99一区视频免费| 成人欧美一区二区三区黑人麻豆| 91麻豆精东视频| 午夜视频在线观看一区二区| 欧美一区二区网站| 国产剧情一区二区三区| 国产精品高潮呻吟| 欧美日韩一本到| 蜜臀va亚洲va欧美va天堂| 久久男人中文字幕资源站| 成人一区二区三区在线观看| 欧美一区二区三区小说| ww久久中文字幕| 欧美日韩亚洲综合一区二区三区| 欧美日韩一区三区四区| 精品国产污网站| 欧美高清一级片在线观看| 欧美激情综合网| 国产日产欧美一区二区视频| 国产成人午夜99999| 欧美三区在线观看| 日韩电影免费一区| 美腿丝袜亚洲一区| 亚洲v日本v欧美v久久精品| 亚洲精品免费视频| 最新久久zyz资源站| 日韩美女久久久| 亚洲影院免费观看| 亚洲va国产天堂va久久en| 亚洲欧洲另类国产综合| 日韩理论片网站| 国产欧美va欧美不卡在线| 精品久久久久久久久久久院品网| 精品国产一二三区| 精品国产成人系列| 中文无字幕一区二区三区| 国产精品日产欧美久久久久| 亚洲欧洲精品成人久久奇米网| 国产精品三级电影| 国产精品初高中害羞小美女文| 中文字幕亚洲综合久久菠萝蜜| 亚洲视频你懂的| 亚洲成人自拍网| 国产米奇在线777精品观看| 成人av片在线观看| 制服丝袜亚洲网站| 国产亚洲福利社区一区| 亚洲欧美国产高清| 日本成人中文字幕在线视频| 国产又粗又猛又爽又黄91精品| 国产福利91精品一区| 4438x亚洲最大成人网| 自拍偷自拍亚洲精品播放| 理论片日本一区| 99精品久久免费看蜜臀剧情介绍| 成人福利电影精品一区二区在线观看| 国产成人一区在线| 日韩手机在线导航| 蜜桃精品视频在线| 中文字幕 久热精品 视频在线| 日欧美一区二区| 91精品视频网| 一本大道久久精品懂色aⅴ| 国产伦精品一区二区三区视频青涩| 亚洲国产日产av| 亚洲人精品午夜| 国产欧美中文在线| wwww国产精品欧美| 欧美一区二区成人| 欧美在线free| 99精品欧美一区| 国产精品一级黄| 欧美成人福利视频| 污片在线观看一区二区| 日本韩国一区二区| 国产精品三级视频| 国产精品亚洲午夜一区二区三区| 欧美蜜桃一区二区三区| 久久精品视频免费| 国产激情视频一区二区在线观看| 欧美精品一二三| 天堂久久一区二区三区| 99精品视频在线播放观看| 国产精品第四页| 成人av电影在线观看| 中文字幕一区三区| 99国产精品久久久| 亚洲欧美怡红院| 91啪在线观看| 亚洲欧美视频在线观看视频| 972aa.com艺术欧美| 一区二区三区中文字幕精品精品| 94-欧美-setu| 婷婷综合久久一区二区三区| 欧美另类久久久品| 日本va欧美va精品| 久久精品欧美一区二区三区不卡| 国产在线视频不卡二| 中文字幕在线播放不卡一区| 97超碰欧美中文字幕| 一区二区在线电影| 精品国产乱码久久久久久久久| 国产露脸91国语对白| 国精产品一区一区三区mba视频 | 成人美女视频在线观看18| 91精品国产福利在线观看| 美女网站色91| 国产色产综合产在线视频| 久久蜜桃一区二区| 亚洲女性喷水在线观看一区| 亚洲视频一区二区免费在线观看| 亚洲成av人在线观看| 亚洲午夜久久久久久久久电影院| 亚洲福中文字幕伊人影院|