我最近一直在努力转移到自己处理我的矩阵控件,以便我的引擎可以转移到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看到了什么?^^;