void CViewWindow::_render() { _renderTerrain(); mSculptor.render(); _renderModel(); //_renderSphere(); _renderLight(); _renderFont(); }
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); }