Exemplo n.º 1
0
	void CViewWindow::_render()
	{
		_renderTerrain();
		mSculptor.render();
		_renderModel();
		//_renderSphere();
		_renderLight();
		_renderFont();
	}
Exemplo n.º 2
0
	void BSPLoader::renderFace( int index )
	{
		sBSPFace face = _faces[index];

		ITexture* tex = NULL; 
		sBSPTexture st = _textures[face.textureID];
		tex = _getTexture(st.strName);
		if (tex != NULL)
		{
			_renderSystem->setTexture(0, tex);
		}

		switch(face.type)
		{
		case sBSPFace::eType_Polygon:
		case sBSPFace::eType_Mesh:
			{
				POSITION_COLOR_TEXTURE* v = new POSITION_COLOR_TEXTURE[face.numMeshVerts];

				for (int i = 0; i < face.numMeshVerts; ++i)
				{
					int indexI = face.meshVertIndex + i;

					int indexV = _meshVertices[indexI];

					indexV += face.vertexIndex;

					v[i]._pos.x = _vertices[indexV].vPosition[0] * 0.00001;
					v[i]._pos.z = _vertices[indexV].vPosition[1] * 0.00001;
					v[i]._pos.y = _vertices[indexV].vPosition[2] * 0.00001;

					v[i]._color = *(DWORD*)&_vertices[indexV].color;

					v[i]._tex.x = _vertices[indexV].vTextureCoord[0];
					v[i]._tex.y = _vertices[indexV].vTextureCoord[1];
				}

				_renderSystem->drawPrimitiveUP(D3DPT_TRIANGLELIST, 
					face.numMeshVerts / 3, v, sizeof(POSITION_COLOR_TEXTURE));

				delete[] v;
			}
			break;
		case sBSPFace::eType_Billboard:
			break;
		case sBSPFace::eType_Patch:
			break;
		default:
			break;
		}

		_renderSystem->setRenderState(D3DRS_ALPHABLENDENABLE, true);
		_renderSystem->setRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
		_renderSystem->setRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
		_renderLight(index);
		_renderSystem->setRenderState(D3DRS_ALPHABLENDENABLE, false);
	}