d opengl自定义vs固定管道矩阵古怪

时间:2011-05-05 16:07:12

标签: opengl matrix d

我最近一直在努力转移到自己处理我的矩阵控件,以便我的引擎可以转移到4.0+上下文,虽然目前我正在使用带有Derelict的2.1上下文。我已经尝试了各种矩阵计算,似乎没有任何东西可以用我的着色器(屏幕上没有任何东西除了FPS计数器,除非我切换回固定管道,或者如果我切换vs设置gl_Position = vec4(位置,1.0); )。即使我抓住OpenGL通常设置的值并将它们放入其中,我也会得到相同的结果。

我添加了我的矩阵和固定管道返回到绘图调用的输出,输出是IDENTICAL。我已经检查并仔细检查了我的着色器代码,所以我很遗憾来自这个bug的来源。

这在OSX和Windows上都会发生。我有一个glGetError()检查每个绘制调用,并没有收到任何错误。着色器链接并验证没有警告或错误。

统一加载的代码:

glUniformMatrix4fv(ModelViewLoc,1, GL_FALSE ,modelview);
glUniformMatrix4fv(ProjectionLoc,1, GL_FALSE ,projection);

顶点着色器:

#version 120

//layout(location = 0) in vec3 position;
attribute vec3 position;

uniform mat4 ModelView;
uniform mat4 Projection;

void main()
        {
                mat4 mvp = Projection*ModelView;
                gl_Position = mvp * vec4(position,1.0);
                //gl_Position = vec4(position,1.0);
        }

片段着色器:

#version 120

uniform float slider;

        void main()
        {
                vec4 diffuse = vec4(vec3(slider),1.0);

                gl_FragColor = diffuse;
        }

调试输出:

模型1:

OpenGL ModelView: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2, -2, -8, 1]
mine:             [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2, -2, -8, 1]

OpenGL Projection:[1.30323, 0, 0, 0, 0, 1.30323, 0, 0, 0, 0, -1.0002, -1, 0, 0, -0.20002, 0]
mine:             [1.30323, 0, 0, 0, 0, 1.30323, 0, 0, 0, 0, -1.0002, -1, 0, 0, -0.20002, 0]

模型2:

OpenGL ModelView: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 2, -8, 1]
mine:             [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2, 2, -8, 1]

OpenGL Projection:[1.30323, 0, 0, 0, 0, 1.30323, 0, 0, 0, 0, -1.0002, -1, 0, 0, -0.20002, 0]
mine:             [1.30323, 0, 0, 0, 0, 1.30323, 0, 0, 0, 0, -1.0002, -1, 0, 0, -0.20002, 0]

* UPDATE *我已经发布了矩阵lib的代码@ github.com/mclark4386/DMath看到了什么?^^;

0 个答案:

没有答案