FX_ENTRY void FX_CALL grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride) { WriteTrace(TraceGlitch, TraceDebug, "grDrawVertexArrayContiguous(%d,%d,%d)\r\n", mode, Count, stride); if (nvidia_viewport_hack && !render_to_texture) { glViewport(0, viewport_offset, viewport_width, viewport_height); nvidia_viewport_hack = 0; } if (stride != 156) { //LOGINFO("Incompatible stride\n"); } reloadTexture(); if (need_to_compile) compile_shader(); vbo_enable(); switch (mode) { case GR_TRIANGLE_STRIP: vbo_buffer(GL_TRIANGLE_STRIP, 0, Count, pointers); break; case GR_TRIANGLE_FAN: vbo_buffer(GL_TRIANGLE_FAN, 0, Count, pointers); break; default: WriteTrace(TraceGlitch, TraceWarning, "grDrawVertexArrayContiguous : unknown mode : %x", mode); } }
FX_ENTRY void FX_CALL grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers2) { void **pointers = (void**)pointers2; LOG("grDrawVertexArray(%d,%d)\r\n", mode, Count); if(need_to_compile) compile_shader(); vbo_buffer(GL_TRIANGLE_FAN,0,Count,pointers[0]); }
FX_ENTRY void FX_CALL grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride) { LOG("grDrawVertexArrayContiguous(%d,%d,%d)\r\n", mode, Count, stride); if(stride != 156) LOGINFO("Incompatible stride\n"); if(need_to_compile) compile_shader(); //only calls ever made are for GR_TRIANGLE_STRIP from Glide64 - so optimize for that vbo_buffer(GL_TRIANGLE_STRIP,0,Count,pointers); }
FX_ENTRY void FX_CALL grDrawTriangle( const void *a, const void *b, const void *c ) { LOG("grDrawTriangle()\r\n\t"); if(nvidia_viewport_hack && !render_to_texture) { glViewport(0, viewport_offset, viewport_width, viewport_height); nvidia_viewport_hack = 0; } reloadTexture(); if(need_to_compile) compile_shader(); VERTEX v[3] = {*(VERTEX *)a, *(VERTEX *)b, *(VERTEX *)c}; vbo_enable(); vbo_buffer(GL_TRIANGLES, 0, 3, &v[0]); }
FX_ENTRY void FX_CALL grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers2) { void **pointers = (void**)pointers2; WriteTrace(TraceGlitch, TraceDebug, "grDrawVertexArray(%d,%d)\r\n", mode, Count); if (nvidia_viewport_hack && !render_to_texture) { glViewport(0, viewport_offset, viewport_width, viewport_height); nvidia_viewport_hack = 0; } reloadTexture(); if (need_to_compile) compile_shader(); if (mode != GR_TRIANGLE_FAN) { WriteTrace(TraceGlitch, TraceWarning, "grDrawVertexArray : unknown mode : %x", mode); } vbo_enable(); vbo_buffer(GL_TRIANGLE_FAN, 0, Count, pointers[0]); }