glUniform and multiple textures
Stephan Rose <[email protected]> Sun, 14 Sep 2008 10:45:26 -0800
| Newsgroups | gmane.games.devel.opengl |
|---|---|
| Organization | Fat City Network Services, San Diego, California |
| Message-ID | <[email protected]> |
Can someone explain what precisely glUniform expects as a value when using it to assign textures? I have a shader that makes use of two textures. One is a cubemap used as a heightmap and the other is a color map (2D Texture) to look up values based on the height in the cubemap. The heightmap is in texture unit 0, the colormap is in texture unit 1. I've spent the whole morning trying to get this to work and it just wouldn't which was really strange as in a previous test application I got it to work just fine. Just when I took all the spaghetti code and made a real engine out of it, things stopped working. Go figure... Now in my old code, I had this: glUniform1i(glGetUniformLocation(programId, "heightMap"), 0); glUniform1i(glGetUniformLocation(programId, "colorMap"), 1); And I used the same in my new code and it didn't work. It worked fine in my old code.... So then I figure, let me look at the texture ID numbers that OpenGL is giving my two textures, they turn out to be 1 and 2. So I change the code to this: glUniform1i(glGetUniformLocation(programId, "heightMap"), 1); glUniform1i(glGetUniformLocation(programId, "colorMap"), 2); It works...flawlessly. And just for reference, in my shader the variables are defined as: uniform samplerCube heightMap; uniform sampler2D colorMap; So what does glUniform expect here? The Texture unit or the texture ID? And if it does expect the texture ID, why did it work in my old code with a Texture ID of 0? And if it expects the texture unit, why is it working in my new code with 1 and 2 even though the textures are in 0 and 1? I don't like it when something works and I don't understand why it works. That's just begging for an invitation to come back to haunt me later and the OpenGL documentation for glUniform is very vague on this as is trying to find any information about this on Google. If someone could clear this up for me I would really appreciate it. Thanks, Stephan ----- FAQ and OpenGL Resources at: http://www.geocities.com/SiliconValley/Hills/9956/OpenGL -- Author: Stephan Rose INET: [email protected] Fat City Hosting, San Diego, California -- http://www.fatcity.com --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [email protected] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB OPENGL-GAMEDEV-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).