static void R_InitUnitCubeVBO( void ) { vec3_t mins = { -1, -1, -1 }; vec3_t maxs = { 1, 1, 1 }; int i; // vec4_t quadVerts[4]; srfVert_t *verts; srfTriangle_t *triangles; if ( glConfig.smpActive ) { ri.Error( ERR_FATAL, "R_InitUnitCubeVBO: FIXME SMP" ); } tess.multiDrawPrimitives = 0; tess.numIndexes = 0; tess.numVertexes = 0; Tess_AddCube( vec3_origin, mins, maxs, colorWhite ); verts = ri.Hunk_AllocateTempMemory( tess.numVertexes * sizeof( srfVert_t ) ); triangles = ri.Hunk_AllocateTempMemory( ( tess.numIndexes / 3 ) * sizeof( srfTriangle_t ) ); for ( i = 0; i < tess.numVertexes; i++ ) { VectorCopy( tess.xyz[ i ], verts[ i ].xyz ); } for ( i = 0; i < ( tess.numIndexes / 3 ); i++ ) { triangles[ i ].indexes[ 0 ] = tess.indexes[ i * 3 + 0 ]; triangles[ i ].indexes[ 1 ] = tess.indexes[ i * 3 + 1 ]; triangles[ i ].indexes[ 2 ] = tess.indexes[ i * 3 + 2 ]; } tr.unitCubeVBO = R_CreateVBO2( "unitCube_VBO", tess.numVertexes, verts, ATTR_POSITION, VBO_USAGE_STATIC ); tr.unitCubeIBO = R_CreateIBO2( "unitCube_IBO", tess.numIndexes / 3, triangles, VBO_USAGE_STATIC ); ri.Hunk_FreeTempMemory( triangles ); ri.Hunk_FreeTempMemory( verts ); tess.multiDrawPrimitives = 0; tess.numIndexes = 0; tess.numVertexes = 0; }
static void R_InitUnitCubeVBO() { vec3_t mins = { -1, -1, -1 }; vec3_t maxs = { 1, 1, 1 }; vboData_t data; R_SyncRenderThread(); tess.multiDrawPrimitives = 0; tess.numIndexes = 0; tess.numVertexes = 0; Tess_MapVBOs( true ); Tess_AddCube( vec3_origin, mins, maxs, colorWhite ); memset( &data, 0, sizeof( data ) ); data.xyz = ( vec3_t * ) ri.Hunk_AllocateTempMemory( tess.numVertexes * sizeof( *data.xyz ) ); data.numVerts = tess.numVertexes; for (unsigned i = 0; i < tess.numVertexes; i++ ) { VectorCopy( tess.verts[ i ].xyz, data.xyz[ i ] ); } tr.unitCubeVBO = R_CreateStaticVBO( "unitCube_VBO", data, VBO_LAYOUT_POSITION ); tr.unitCubeIBO = R_CreateStaticIBO( "unitCube_IBO", tess.indexes, tess.numIndexes ); ri.Hunk_FreeTempMemory( data.xyz ); tess.multiDrawPrimitives = 0; tess.numIndexes = 0; tess.numVertexes = 0; tess.verts = nullptr; tess.indexes = nullptr; }