我想獲得一個工作的OpenGL渲染器,但我卡在一個奇怪的地方。我正在生成一個看起來正確的模型,視圖和投影矩陣。 GLIntercept給了我以下日誌:OpenGL奇怪的渲染
glClear(GL_COLOR_BUFFER_BIT)
glEnableVertexAttribArray(0)
glUniformMatrix4fv(0,1,false,[... see below ...])
glBindBuffer(GL_ARRAY_BUFFER,1)
glVertexAttribPointer(0,3,GL_FLOAT,false,0,0000000000000000)
glDrawArrays(GL_POLYGON,0,3) GLSL=3
glDisableVertexAttribArray(0)
wglSwapBuffers(FFFFFFFF9D011AB3)=true
我的MVP矩陣如下:
[
0,050000 0,000000 0,000000 0,500000
0,000000 0,050000 0,000000 0,500000
0,000000 0,000000 5,000000 0,000000
0,000000 0,000000 -50,000000 1,000000
]
下面是我使用的頂點着色器:
#version 330
layout (location = 0) in vec3 vertex;
uniform mat4 mvp;
out vec4 color;
void main() {
gl_Position = mvp * vec4(vertex, 0.0);
color = vec4(1, 1, 1, 1);
}
和片段着色器:
#version 330
in vec4 color;
out vec4 fragColor;
void main() {
fragColor = color;
}
This是怎麼計算的投影矩陣,座標是最簡單的 可能的,扁平立方體:
[
new Vector3f(-1, -1, 0),
new Vector3f(1, -1, 0),
new Vector3f(1, 1, 0),
new Vector3f(-1, 1, 0)
]
但呈現到一個奇怪的事情:
如果我乘以矩陣與但是,在相同的座標應用程序,但我得到預期的結果:
(0,45 0,45 0,00 1,00)
(0,55 0,45 0,00 1,00)
(0,55 0,55 0,00 1,00)
(0,45 0,55 0,00 1,00)
有人可以指出我的方向來解決這個問題嗎?
你的矩陣看起來不正確。你有一個全零的行。看起來像你將'w'轉換爲0.0,這會搞砸一切。 – derhass 2014-12-19 00:03:19
@derhass查看編輯,我修正了(是嗎?)MVP矩陣計算,但結果仍然*完全相同......另外,我特別感興趣的是爲什麼GLSL和應用內計算似乎不同。 – 2014-12-19 00:41:37