Thank you for your answer Relic.
I’ve done the changes you told me to but the dark texture is still there!
Here is the relevant code:
// Create texture to use in the fragment shader
////////////////////////////////////////////////
GLuint CreateMipMapLinear(int w, int h, float *pixels)
{
GLuint texture;
glGenTextures(1, &texture);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, texture);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB ,w,h, GL_RGB, GL_FLOAT, pixels);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
return texture;
}
// Create texture to use in vertex shader
//////////////////////////////////////////
GLuint CreateTextureNearest(int w, int h, float *pixels)
{
GLuint texture;
glGenTextures(1, &texture);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA32F_ARB , w, h, 0, GL_RGBA, GL_FLOAT, pixels);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
return texture;
}
// Linking textures to shaders
///////////////////////////////
_envMapLoc = glGetUniformLocationARB(_program, “EnvMap”);
_textureLoc = glGetUniformLocationARB(_program,“texture”);
_textureVertLoc = glGetUniformLocationARB(_program,“textureVert”);
glUniform1iARB(_envMapLoc, 0);
glUniform1iARB(_textureLoc, 1);
glUniform1iARB(_textureVertLoc, 2);
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, envMap);
glDisable(GL_TEXTURE_CUBE_MAP_ARB);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glActiveTextureARB(GL_TEXTURE2_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureVert);
// VERTEX SHADER
uniform sampler2D textureVert;
void main(void)
{
gl_FrontColor = texture2DLod(textureVert,vec2(0.5,0.5),0.0);
gl_Position = ftransform();
}
// FRAGMENT SHADER
uniform samplerCube EnvMap;
uniform sampler2D texture;
void main (void)
{
gl_FragColor = gl_Color;
}
///////////////////////////////////////////
When I create the vertex shader texture I have to use GL_RGBA32F_ARB because it doesn’t recognize RGBA_FLOAT32.