bool TextureModeData::BeginSphereTexturing() { glPushAttrib(GL_COLOR_BUFFER_BIT|GL_TEXTURE_BIT| GL_DEPTH_BUFFER_BIT|GL_ENABLE_BIT); // Create the rextures if(!sphereTexturesDataCreated) { MakeTextures(); sphereTexturesDataCreated = true; } // Create and bind the textures if we have not done that yet. if(!sphereTexturesLoaded) { glGenTextures(1, &textureName); // Set up the first texture glBindTexture(GL_TEXTURE_2D, textureName); 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_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 2, SPHERE_TEX_W, SPHERE_TEX_H, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, sphereTexture); sphereTexturesLoaded = true; } // set the blend mode glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // // Get the AlphaTest mode to restore it later. // GLint dt = 0; glGetIntegerv(GL_DEPTH_TEST, &dt); if(dt == 1) { glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.7); } // // Turn on the texture // glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureName); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); return true; }
bool avtOpenGLAtomTexturer2D::BeginSphereTexturing() { // Create the rextures if(!sphereTexturesDataCreated) { MakeTextures(); sphereTexturesDataCreated = true; } // Create and bind the textures if we have not done that yet. if(!sphereTexturesLoaded) { glGenTextures(1, &textureName); // Set up the first texture glBindTexture(GL_TEXTURE_2D, textureName); 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_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 2, SPHERE_TEX_W, SPHERE_TEX_H, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, sphereTexture); sphereTexturesLoaded = true; } // // Get whether GL_BLEND is enabled. // glGetIntegerv(GL_BLEND, &isBlendEnabled); if(isBlendEnabled == 0) glEnable(GL_BLEND); glGetIntegerv(GL_BLEND_SRC, &blendFunc0); glGetIntegerv(GL_BLEND_DST, &blendFunc1); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // // Get the AlphaTest mode to restore it later. // GLint dt = 0; glGetIntegerv(GL_DEPTH_TEST, &dt); if(dt == 1) { // Get the current alpha test function glGetIntegerv(GL_ALPHA_TEST, &isAlphaTestEnabled); if(isAlphaTestEnabled) { glGetIntegerv(GL_ALPHA_TEST_FUNC, &alphaTestFunc); glGetFloatv(GL_ALPHA_TEST_REF, &alphaTestRef); } else glEnable(GL_ALPHA_TEST); // Set the alpha testing mode and function. glAlphaFunc(GL_GREATER, 0.7); needAlphaTest = 1; } else needAlphaTest = 0; // // Turn on the texture // glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureName); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); return true; }