Talk:Tutorial3: Rendering 3D Objects (C /SDL): Difference between revisions
m Added: Matrix Multiplication Order Question |
|||
Line 46: | Line 46: | ||
</pre> | </pre> | ||
Could someone please clearify this for me? | Could someone please clearify this for me? | ||
:Yes, you're right. The vertex data usually is in an abstract model space (e.g. from the modelling tool) and is moved into a common world space by the model matrix. Then it is moved into eye/camera space by the view matrix. These two steps are often combined in the modelviewmatrix. Now it's moved from a 3d world into a normalized space ( x,y and z have to be in range [-1;1] to be visible later ) by the projection matrix. So it's <pre>Position = Projection*View*Model*Vertex</pre>[[User:MasterOfGhosts|MasterOfGhosts]] 07:19, 29 August 2010 (UTC) |
Latest revision as of 07:19, 29 August 2010
Has any one managed to successfully compile/link this code under windows. I tried getting this to run using SDL 1.3 and GLEW 1.53 on the VC++ 2008 compiler it seemingly compiles fine however all that I manage to see is a white background in the spawned window.
Solved my issue with Tutorial3
After some debugging I narrowed down the issue to an issue with the fragment shader. I believe the issue was caused by the shader compiler supplied by the driver was being strict, possibly because of the original use of the gl_FragColor which is now depreciated.
Changes I made to fix the issue for my uses.
File: tutorial3.frag
#version 150 in vec3 ex_Color; out vec4 fragColor; void main(void) { fragColor = vec4(ex_Color, 1.0); }
Matrix Multiplication Order Question
I've been trying to catch up on OpenGL3+ and have a little trouble understanding the matrix multiplication order for creating the modelviewmatrix. In many vertex shaders i've seen something like
vertex_out = projection * modelview * vertex_in
which (I think) could also be written as
vertex_out = projection * view * model * vertex_in
In this tutorial you multiply the modelview matrix with the projection matrix
multiply4x4(modelmatrix, projectionmatrix);
and in the end use the resulting matrix in the shader. To me this looks like
vertex_out = modelmatrix * projectionmatrix * vertex_in
Could someone please clearify this for me?
- Yes, you're right. The vertex data usually is in an abstract model space (e.g. from the modelling tool) and is moved into a common world space by the model matrix. Then it is moved into eye/camera space by the view matrix. These two steps are often combined in the modelviewmatrix. Now it's moved from a 3d world into a normalized space ( x,y and z have to be in range [-1;1] to be visible later ) by the projection matrix. So it's
Position = Projection*View*Model*Vertex
MasterOfGhosts 07:19, 29 August 2010 (UTC)