VOID Render(float timeDelta) { if(!PrepareShader()) return ; SetupMatrix(timeDelta) ; // Clear the back-buffer to a RED color g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 ); // Begin the scene if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { // Rendering of scene objects can happen here g_pd3dDevice->SetPixelShader(g_pPixelShader) ; g_pTorusMesh->DrawSubset(0) ; // End the scene g_pd3dDevice->EndScene(); } // Present the back-buffer contents to the display g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); }
void Init() { // get application and renderer muggle::Application* app = muggle::GetApplication(); renderer = app->getRenderer(); renderer->setClearColor(muggle::vec4f(0.3f, 0.3f, 0.3f, 0.3f)); // initialize glad if (!gladLoadGL()) { MASSERT_MSG(0, "Failed in gladLoadGL"); return; } PrepareData(); PrepareShader(); }
void Shader::Render() { PrepareShader(); for (map<const TexturedModel*, list<Element3D*>*>::iterator it = render_queue.queue.begin(); it != render_queue.queue.end(); it++) { TexturedModel* textured_model = (TexturedModel*)it->first; if (!PrepareModel(textured_model)) continue; list<Element3D*>* element_list = render_queue.queue[textured_model]; for (Element3D* element : *element_list) if (element->enabled) { PrepareInstance(element); glDrawElements(GL_TRIANGLES, textured_model->model->getIndiceCount(), GL_UNSIGNED_INT, 0); } } }
// This function does any needed initialization on the rendering // context. void SetupRC() { GLint i; fprintf(stdout, "Procedural Texture Mapping Demo\n\n"); // Make sure required functionality is available! if (!GLEE_VERSION_2_0 && (!GLEE_ARB_fragment_shader || !GLEE_ARB_vertex_shader || !GLEE_ARB_shader_objects || !GLEE_ARB_shading_language_100)) { fprintf(stderr, "GLSL extensions not available!\n"); Sleep(2000); exit(0); } fprintf(stdout, "Controls:\n"); fprintf(stdout, "\tRight-click for menu\n\n"); fprintf(stdout, "\tR/L arrows\t+/- rotate light\n\n"); fprintf(stdout, "\tU/D arrows\t+/- increase/decrease tesselation\n\n"); fprintf(stdout, "\tx/X\t\tMove +/- in x direction\n"); fprintf(stdout, "\ty/Y\t\tMove +/- in y direction\n"); fprintf(stdout, "\tz/Z\t\tMove +/- in z direction\n\n"); fprintf(stdout, "\tq\t\tExit demo\n\n"); // Black background glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); // Misc. state glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glShadeModel(GL_SMOOTH); // Load and compile shaders for (i = 0; i < TOTAL_SHADER_SETS; i++) { PrepareShader(i); } // Install first shader glUseProgram(progObj[whichShader]); }
void Init() { // get application and renderer muggle::Application* app = muggle::GetApplication(); renderer = app->getRenderer(); renderer->setClearColor(muggle::vec4f(0.3f, 0.3f, 0.3f, 0.3f)); // initialize glad if (!gladLoadGL()) { MASSERT_MSG(0, "Failed in gladLoadGL"); return; } PrepareShader(); PrepareData(); camera.setMoveSpeed(0.1f); camera.setPosition(muggle::vec3f(0.0f, 0.0f, -5.0f)); // camera initialize camera.Update(); }
void TerrainRenderer::RenderTerrainShader(ShadowMap* shadow, bool filtered) { ENSURE(m->phase == Phase_Render); std::vector<CPatchRData*>& visiblePatches = filtered ? m->filteredPatches : m->visiblePatches; std::vector<CDecalRData*>& visibleDecals = filtered ? m->filteredDecals : m->visibleDecals; if (visiblePatches.empty() && visibleDecals.empty()) return; CShaderManager& shaderManager = g_Renderer.GetShaderManager(); typedef std::map<CStr, CStr> Defines; Defines defBasic; if (shadow) { defBasic["USE_SHADOW"] = "1"; if (g_Renderer.m_Caps.m_ARBProgramShadow && g_Renderer.m_Options.m_ARBProgramShadow) defBasic["USE_FP_SHADOW"] = "1"; if (g_Renderer.m_Options.m_ShadowPCF) defBasic["USE_SHADOW_PCF"] = "1"; #if !CONFIG2_GLES defBasic["USE_SHADOW_SAMPLER"] = "1"; #endif } defBasic["LIGHTING_MODEL_" + g_Renderer.GetLightEnv().GetLightingModel()] = "1"; CShaderTechniquePtr techBase(shaderManager.LoadEffect("terrain_base", defBasic)); CShaderTechniquePtr techBlend(shaderManager.LoadEffect("terrain_blend", defBasic)); CShaderTechniquePtr techDecal(shaderManager.LoadEffect("terrain_decal", defBasic)); // render the solid black sides of the map first CShaderTechniquePtr techSolid = g_Renderer.GetShaderManager().LoadEffect("gui_solid"); techSolid->BeginPass(); CShaderProgramPtr shaderSolid = techSolid->GetShader(); shaderSolid->Uniform("transform", g_Renderer.GetViewCamera().GetViewProjection()); shaderSolid->Uniform("color", 0.0f, 0.0f, 0.0f, 1.0f); PROFILE_START("render terrain sides"); for (size_t i = 0; i < visiblePatches.size(); ++i) visiblePatches[i]->RenderSides(shaderSolid); PROFILE_END("render terrain sides"); techSolid->EndPass(); techBase->BeginPass(); PrepareShader(techBase->GetShader(), shadow); PROFILE_START("render terrain base"); CPatchRData::RenderBases(visiblePatches, techBase->GetShader(), false); PROFILE_END("render terrain base"); techBase->EndPass(); // render blends techBlend->BeginPass(); PrepareShader(techBlend->GetShader(), shadow); // switch on blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // no need to write to the depth buffer a second time glDepthMask(0); // render blend passes for each patch PROFILE_START("render terrain blends"); CPatchRData::RenderBlends(visiblePatches, techBlend->GetShader(), false); PROFILE_END("render terrain blends"); techBlend->EndPass(); // Render terrain decals techDecal->BeginPass(); PrepareShader(techDecal->GetShader(), shadow); PROFILE_START("render terrain decals"); for (size_t i = 0; i < visibleDecals.size(); ++i) visibleDecals[i]->Render(techDecal->GetShader(), false); PROFILE_END("render terrain decals"); techDecal->EndPass(); // restore OpenGL state g_Renderer.BindTexture(1, 0); g_Renderer.BindTexture(2, 0); g_Renderer.BindTexture(3, 0); glDepthMask(1); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_BLEND); }
// This function does any needed initialization on the rendering // context. void SetupRC() { GLint i; fprintf(stdout, "Bump Mapping Demo\n\n"); // Make sure required functionality is available! if (!GLEE_VERSION_2_0 && (!GLEE_ARB_fragment_shader || !GLEE_ARB_vertex_shader || !GLEE_ARB_shader_objects || !GLEE_ARB_shading_language_100)) { fprintf(stderr, "GLSL extensions not available!\n"); Sleep(2000); exit(0); } // Make sure we have multitexture! if (!GLEE_VERSION_1_3 && !GLEE_ARB_multitexture) { fprintf(stderr, "Neither OpenGL 1.3 nor necessary" " extensions are available!\n"); Sleep(2000); exit(0); } glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); fprintf(stdout, "Controls:\n"); fprintf(stdout, "\tRight-click for menu\n\n"); fprintf(stdout, "\tR/L arrows\t+/- rotate lights\n\n"); fprintf(stdout, "\tx/X\t\tMove +/- in x direction\n"); fprintf(stdout, "\ty/Y\t\tMove +/- in y direction\n"); fprintf(stdout, "\tz/Z\t\tMove +/- in z direction\n\n"); fprintf(stdout, "\tq\t\tExit demo\n\n"); // Black background glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); // Misc. state glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glShadeModel(GL_SMOOTH); glEnable(GL_CULL_FACE); // Texture state glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); CreateRivetMap(); glBindTexture(GL_TEXTURE_2D, 1); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); CreatePyramidMap(); glBindTexture(GL_TEXTURE_2D, 0); lightPos0[0] = 300.0f * cos(-lightRotation * 3.14159265f / 180.0f); lightPos0[1] = 0.0f; lightPos0[2] = 300.0f * sin(-lightRotation * 3.14159265f / 180.0f); // Load and compile shaders for (i = 0; i < TOTAL_SHADER_SETS; i++) { PrepareShader(i); } // Install first shader glUseProgram(progObj[whichShader]); }
// This function does any needed initialization on the rendering // context. void SetupRC() { const GLubyte *version; GLint i; fprintf(stdout, "Vertex Blending Demo\n\n"); // Make sure required functionality is available! if (gltIsExtSupported("GL_ARB_vertex_shader") && gltIsExtSupported("GL_ARB_shader_objects") && gltIsExtSupported("GL_ARB_shading_language_100")) { highLevelAvailable = GL_TRUE; } if (gltIsExtSupported("GL_ARB_vertex_program")) { lowLevelAvailable = GL_TRUE; } if (!lowLevelAvailable && !highLevelAvailable) { fprintf(stderr, "Neither vertex shader" " extension is available!\n"); usleep(2000); exit(0); } // Make sure we have 1.3+, multitexture, cube maps, and texenv add! version = glGetString(GL_VERSION); if ( ((version[0] == '1') && ((version[1] != '.') || (version[2] < '3') || (version[2] > '9'))) && (!gltIsExtSupported("GL_ARB_multitexture") || !gltIsExtSupported("GL_ARB_texture_env_add")) ) { fprintf(stderr, "Neither OpenGL 1.3 nor necessary" " extensions are available!\n"); usleep(2000); exit(0); } glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); if (lowLevelAvailable) { glGenProgramsARB = gltGetExtensionPointer("glGenProgramsARB"); glBindProgramARB = gltGetExtensionPointer("glBindProgramARB"); glProgramStringARB = gltGetExtensionPointer("glProgramStringARB"); glDeleteProgramsARB = gltGetExtensionPointer("glDeleteProgramsARB"); glProgramLocalParameter4fARB = gltGetExtensionPointer("glProgramLocalParameter4fARB"); glProgramLocalParameter4fvARB = gltGetExtensionPointer("glProgramLocalParameter4fvARB"); glVertexAttrib1fARB = gltGetExtensionPointer("glVertexAttrib1fARB"); if (!glGenProgramsARB || !glBindProgramARB || !glProgramStringARB || !glDeleteProgramsARB || !glProgramLocalParameter4fARB || !glProgramLocalParameter4fvARB || !glVertexAttrib1fARB) { fprintf(stderr, "Not all entrypoints were available!\n"); usleep(2000); exit(0); } } if (highLevelAvailable) { glCreateShaderObjectARB = gltGetExtensionPointer("glCreateShaderObjectARB"); glCreateProgramObjectARB = gltGetExtensionPointer("glCreateProgramObjectARB"); glAttachObjectARB = gltGetExtensionPointer("glAttachObjectARB"); glDetachObjectARB = gltGetExtensionPointer("glDetachObjectARB"); glDeleteObjectARB = gltGetExtensionPointer("glDeleteObjectARB"); glShaderSourceARB = gltGetExtensionPointer("glShaderSourceARB"); glCompileShaderARB = gltGetExtensionPointer("glCompileShaderARB"); glLinkProgramARB = gltGetExtensionPointer("glLinkProgramARB"); glValidateProgramARB = gltGetExtensionPointer("glValidateProgramARB"); glUseProgramObjectARB = gltGetExtensionPointer("glUseProgramObjectARB"); glGetObjectParameterivARB = gltGetExtensionPointer("glGetObjectParameterivARB"); glGetInfoLogARB = gltGetExtensionPointer("glGetInfoLogARB"); glUniform3fvARB = gltGetExtensionPointer("glUniform3fvARB"); glUniformMatrix3fvARB = gltGetExtensionPointer("glUniformMatrix3fvARB"); glUniformMatrix4fvARB = gltGetExtensionPointer("glUniformMatrix4fvARB"); glVertexAttrib1fARB = gltGetExtensionPointer("glVertexAttrib1fARB"); glGetUniformLocationARB = gltGetExtensionPointer("glGetUniformLocationARB"); glGetAttribLocationARB = gltGetExtensionPointer("glGetAttribLocationARB"); if (!glCreateShaderObjectARB || !glCreateProgramObjectARB || !glAttachObjectARB || !glDetachObjectARB || !glDeleteObjectARB || !glShaderSourceARB || !glCompileShaderARB || !glLinkProgramARB || !glValidateProgramARB || !glUseProgramObjectARB || !glGetObjectParameterivARB || !glGetInfoLogARB || !glUniformMatrix4fvARB || !glUniformMatrix4fvARB || !glUniform3fvARB || !glVertexAttrib1fARB || !glGetUniformLocationARB || !glGetAttribLocationARB) { fprintf(stderr, "Not all entrypoints were available!\n"); usleep(2000); exit(0); } useHighLevel = GL_TRUE; } fprintf(stdout, "Controls:\n"); fprintf(stdout, "\tRight-click for menu\n\n"); fprintf(stdout, "\tL/R arrows\tChange sphere of influence\n"); fprintf(stdout, "\tU/D arrows\tChange angle of forearm\n\n"); fprintf(stdout, "\tx/X\t\tMove +/- in x direction\n"); fprintf(stdout, "\ty/Y\t\tMove +/- in y direction\n"); fprintf(stdout, "\tz/Z\t\tMove +/- in z direction\n\n"); fprintf(stdout, "\tq\t\tExit demo\n\n"); // Black background glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); // Hidden surface removal glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); // Misc. glShadeModel(GL_SMOOTH); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glPointSize(10.0f); glLineWidth(5.0f); // Texture state glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); glBindTexture(GL_TEXTURE_1D, 0+1); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP); CreatePowMap(1.0, 1.0, 1.0); glEnable(GL_TEXTURE_1D); if (lowLevelAvailable) { glGenProgramsARB(TOTAL_SHADERS, ids); // Low-level will always be enabled, but high-level // will take precedence if they're both enabled glEnable(GL_VERTEX_PROGRAM_ARB); } // Load and compile low- and high-level shaders for (i = 0; i < TOTAL_SHADERS; i++) { PrepareShader(i); } // Install first shader if (lowLevelAvailable) { glBindProgramARB(GL_VERTEX_PROGRAM_ARB, ids[0]); } if (useHighLevel) { glUseProgramObjectARB(progObj[0]); } }
// This function does any needed initialization on the rendering // context. void SetupRC() { GLint i; fprintf(stdout, "Vertex Shaders Demo\n\n"); // Make sure required functionality is available! if (!GLEE_VERSION_2_0 && (!GLEE_ARB_vertex_shader || !GLEE_ARB_shader_objects || !GLEE_ARB_shading_language_100)) { fprintf(stderr, "GLSL extensions not available!\n"); Sleep(2000); exit(0); } // Make sure we have multitexture, cube maps, and texenv add! if (!GLEE_VERSION_1_3 && (!GLEE_ARB_multitexture || !GLEE_ARB_texture_cube_map || !GLEE_ARB_texture_env_add)) { fprintf(stderr, "Neither OpenGL 1.3 nor necessary" " extensions are available!\n"); Sleep(2000); exit(0); } glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); fprintf(stdout, "Controls:\n"); fprintf(stdout, "\tRight-click for menu\n\n"); fprintf(stdout, "\tR/L arrows\t+/- fog density for \"fog\" shader\n"); fprintf(stdout, "\tR/L arrows\t+/- rotate lights for others shaders\n\n"); fprintf(stdout, "\tx/X\t\tMove +/- in x direction, stretch for \"stretch\" shader\n"); fprintf(stdout, "\ty/Y\t\tMove +/- in y direction, stretch for \"stretch\" shader\n"); fprintf(stdout, "\tz/Z\t\tMove +/- in z direction, stretch for \"stretch\" shader\n\n"); fprintf(stdout, "\tq\t\tExit demo\n\n"); // Black background glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); // Misc. state glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glShadeModel(GL_SMOOTH); glFogfv(GL_FOG_COLOR, fogColor); glFogi(GL_FOG_MODE, GL_EXP2); glFogi(GL_FOG_COORD_SRC, GL_FOG_COORD); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Texture state glActiveTexture(GL_TEXTURE3); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); glBindTexture(GL_TEXTURE_1D, 3); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); CreatePowMap(0.25, 0.25, 1.0); glActiveTexture(GL_TEXTURE2); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); glBindTexture(GL_TEXTURE_1D, 2); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); CreatePowMap(0.25, 1.0, 0.25); glActiveTexture(GL_TEXTURE1); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); glBindTexture(GL_TEXTURE_1D, 1); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); CreatePowMap(1.0, 0.25, 0.25); glActiveTexture(GL_TEXTURE0); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); glBindTexture(GL_TEXTURE_1D, 0); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); CreatePowMap(1.0, 1.0, 1.0); // Load and compile shaders for (i = 0; i < TOTAL_SHADERS; i++) { PrepareShader(i); } // Install first shader glUseProgram(progObj[whichShader]); }
void TerrainRenderer::RenderTerrainShader(const CShaderDefines& context, ShadowMap* shadow, bool filtered) { ENSURE(m->phase == Phase_Render); std::vector<CPatchRData*>& visiblePatches = filtered ? m->filteredPatches : m->visiblePatches; std::vector<CDecalRData*>& visibleDecals = filtered ? m->filteredDecals : m->visibleDecals; if (visiblePatches.empty() && visibleDecals.empty()) return; CShaderManager& shaderManager = g_Renderer.GetShaderManager(); CShaderTechniquePtr techBase(shaderManager.LoadEffect(CStrIntern("terrain_base"), context, CShaderDefines())); CShaderTechniquePtr techBlend(shaderManager.LoadEffect(CStrIntern("terrain_blend"), context, CShaderDefines())); CShaderTechniquePtr techDecal(shaderManager.LoadEffect(CStrIntern("terrain_decal"), context, CShaderDefines())); // render the solid black sides of the map first CShaderTechniquePtr techSolid = g_Renderer.GetShaderManager().LoadEffect("gui_solid"); techSolid->BeginPass(); CShaderProgramPtr shaderSolid = techSolid->GetShader(); shaderSolid->Uniform("transform", g_Renderer.GetViewCamera().GetViewProjection()); shaderSolid->Uniform("color", 0.0f, 0.0f, 0.0f, 1.0f); PROFILE_START("render terrain sides"); for (size_t i = 0; i < visiblePatches.size(); ++i) visiblePatches[i]->RenderSides(shaderSolid); PROFILE_END("render terrain sides"); techSolid->EndPass(); techBase->BeginPass(); PrepareShader(techBase->GetShader(), shadow); PROFILE_START("render terrain base"); CPatchRData::RenderBases(visiblePatches, techBase->GetShader(), false); PROFILE_END("render terrain base"); techBase->EndPass(); // render blends techBlend->BeginPass(); PrepareShader(techBlend->GetShader(), shadow); // switch on blending glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // no need to write to the depth buffer a second time glDepthMask(0); // render blend passes for each patch PROFILE_START("render terrain blends"); CPatchRData::RenderBlends(visiblePatches, techBlend->GetShader(), false); PROFILE_END("render terrain blends"); techBlend->EndPass(); // Render terrain decals techDecal->BeginPass(); PrepareShader(techDecal->GetShader(), shadow); PROFILE_START("render terrain decals"); for (size_t i = 0; i < visibleDecals.size(); ++i) visibleDecals[i]->Render(techDecal->GetShader(), false); PROFILE_END("render terrain decals"); techDecal->EndPass(); // restore OpenGL state g_Renderer.BindTexture(1, 0); g_Renderer.BindTexture(2, 0); g_Renderer.BindTexture(3, 0); glDepthMask(1); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_BLEND); }
// This function does any needed initialization on the rendering // context. void SetupRC() { GLint i; fprintf(stdout, "Vertex Blending Demo\n\n"); // Make sure required functionality is available! if (!GLEE_VERSION_2_0 && (!GLEE_ARB_vertex_shader || !GLEE_ARB_shader_objects || !GLEE_ARB_shading_language_100)) { fprintf(stderr, "GLSL extensions not available!\n"); Sleep(2000); exit(0); } // Make sure we have multitexture, cube maps, and texenv add! if (!GLEE_VERSION_1_3 && (!GLEE_ARB_multitexture || !GLEE_ARB_texture_cube_map || !GLEE_ARB_texture_env_add)) { fprintf(stderr, "Neither OpenGL 1.3 nor necessary" " extensions are available!\n"); Sleep(2000); exit(0); } glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); fprintf(stdout, "Controls:\n"); fprintf(stdout, "\tRight-click for menu\n\n"); fprintf(stdout, "\tL/R arrows\tChange sphere of influence\n"); fprintf(stdout, "\tU/D arrows\tChange angle of forearm\n\n"); fprintf(stdout, "\tx/X\t\tMove +/- in x direction\n"); fprintf(stdout, "\ty/Y\t\tMove +/- in y direction\n"); fprintf(stdout, "\tz/Z\t\tMove +/- in z direction\n\n"); fprintf(stdout, "\tq\t\tExit demo\n\n"); // Black background glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); // Hidden surface removal glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); // Misc. glShadeModel(GL_SMOOTH); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glPointSize(10.0f); glLineWidth(5.0f); // Texture state glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); glBindTexture(GL_TEXTURE_1D, 0); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP); CreatePowMap(1.0, 1.0, 1.0); glEnable(GL_TEXTURE_1D); // Load and compile shaders for (i = 0; i < TOTAL_SHADERS; i++) { PrepareShader(i); } // Install first shader glUseProgram(progObj[0]); }