# "Beginning OpenGL Game Programming 2nd edition" fragment shader compile problems

This topic is 2945 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi guys, I'm hoping smeone can give me some advice.
I recently got "Beginning OpenGL Game Programming 2nd edition" by Luke Bernstead.

The first thing i have been doing is doing is reading through and compiling / running the projects.
When I get to the first one with a fragment shader (Chapter 6) however, it bombs out. After some debugging, I've narrowed it down to the fragment shader.

#version 130 in vec4 color; out vec4 outColor; void main(void) { outColor = color; }

I tried changing the shader to something like this, which allows the program to run but everything is rendered black:
void main() { gl_FragColor = gl_Color; }
[as far as I can tell this is deprecated anyway]

I also mentioned the vert shader works; here it is:
#version 130 uniform mat4 projection_matrix; uniform mat4 modelview_matrix; in vec3 a_Vertex; in vec3 a_Color; out vec4 color; void main(void) { vec4 pos = modelview_matrix * vec4(a_Vertex, 1.0); gl_Position = projection_matrix * pos; color = vec4(a_Color, 1.0); } 

When I investigate what glGetShaderInfoLog says, all i get is:
useful, huh?

Unfortunately, I'm new to this whole thing and after a lot of searching on-line I'm still at an impasse. I hoping by posting here someone would be able to help me.

Oh yeah, my laptop's graphics card is: ATI Radeon HD 4500 series. I ran GPUCapsViewer; which told me that the card is fully shader version 1.3 compatible.

Any help appreciated, am i doing something wrong?!

##### Share on other sites

Hi guys, I'm hoping smeone can give me some advice.
I recently got "Beginning OpenGL Game Programming 2nd edition" by Luke Bernstead.

The first thing i have been doing is doing is reading through and compiling / running the projects.
When I get to the first one with a fragment shader (Chapter 6) however, it bombs out. After some debugging, I've narrowed it down to the fragment shader.

#version 130 in vec4 color; out vec4 outColor; void main(void) { outColor = color; }

I tried changing the shader to something like this, which allows the program to run but everything is rendered black:
void main() { gl_FragColor = gl_Color; }
[as far as I can tell this is deprecated anyway]

I also mentioned the vert shader works; here it is:
#version 130 uniform mat4 projection_matrix; uniform mat4 modelview_matrix; in vec3 a_Vertex; in vec3 a_Color; out vec4 color; void main(void) { vec4 pos = modelview_matrix * vec4(a_Vertex, 1.0); gl_Position = projection_matrix * pos; color = vec4(a_Color, 1.0); } 

When I investigate what glGetShaderInfoLog says, all i get is:

useful, huh?

Unfortunately, I'm new to this whole thing and after a lot of searching on-line I'm still at an impasse. I hoping by posting here someone would be able to help me.

Oh yeah, my laptop's graphics card is: ATI Radeon HD 4500 series. I ran GPUCapsViewer; which told me that the card is fully shader version 1.3 compatible.

Any help appreciated, am i doing something wrong?!
[/quote]
If you are going to change the fragment shader, it needs to be compatible with the vertex shader. You have a varying variable called color from the vertex shader being passed to the fragment shader but where is it declared? You need to do this if you want to use the built-in type:
#version 130 in vec4 color; void main(void) { gl_FragColor = color; }
Personally, when I am learning from a book with source code, I don't build the projects until I understand the underlying code. That way whether it compiles or not, I will be in a position to get it to work. The alternative is too frustrating.

##### Share on other sites
Hi torelocks,

Sorry you are having trouble with the source code that came with the book. Could you try the latest bug fix release from here: http://www.kazade.co.uk/downloads/boglgp/

Let me know if you still have trouble,

Thanks,

Luke.

##### Share on other sites
Hi guys,
firstly thanks for your quick replies.

@jesse, you make a very good point about understanding the content before compiling. This is what I'm trying to do, chapter by chapter but i was totally stumped with this one.
Thanks for pointing out that the output vertex variables need to be named the same as the input fragment ones...that was a detail I missed!

@Luke, much thanks for those bugfixes; the problem i was hitting is fixed. it was indeed one of the problems referred to in the fix notes:
* Since release, certain drivers (specifically AMD) started requiring precision qualifiers in the fragment shader causing the examples to fail while compiling the shader. All shaders are now fixed and an accompanying document gives a brief explanation of the issue.[/quote]

I did notice that one of the other bug-fixes is not fixed (as far as I can tell):
An incorrect size was passed to glGetShaderInfoLog causing any log output to be truncated. [/quote]

I'm guessing this is Luke Benstead...if so, thanks for writing a clear and readable book. One suggestion I would make is to place links to these bug-fixes on:
http://glbook.gamedev.net
as the book says that's the support web-site and there's currently no support available there.

Again, thanks for your help. It's great to see a friendly and helpful community. Hopefully i can give some back down the line

T

• ### Game Developer Survey

We are looking for qualified game developers to participate in a 10-minute online survey. Qualified participants will be offered a \$15 incentive for your time and insights. Click here to start!

• 12
• 30
• 9
• 16
• 12