正投影を使用しようとすると、探している結果が得られません。次の2D頂点とtexcoords(1行おきに)を含むVBOがあります。
0, 0,
0.0, 0.0,
512, 0,
1.0, 0.0,
512, 512,
1.0, 1.0,
0, 512,
0.0, 1.0
現時点ではglDrawArrays(GL_TRIANGLE_FAN, 0, 4);
、VBOを使用して描画しています(gDEBuggerで確認しました)。代わりに、頂点シェーダーに問題があるようです。
これは問題のあるシェーダーです。
#version 420
uniform mat4 projection;
uniform mat4 modelview;
layout(location = 0) in vec2 vertex;
layout(location = 1) in vec2 texcoord;
out vec2 f_texcoord;
void main() {
const float right = 800.0;
const float bottom = 600.0;
const float left = 0.0;
const float top = 0.0;
const float far = 1.0;
const float near = -1.0;
mat4 testmat = mat4(
vec4(2.0 / (right - left), 0, 0, -(right + left) / (right - left)),
vec4(0, 2.0 / (top - bottom), 0, -(top + bottom) / (top - bottom)),
vec4(0, 0, -2.0 / (far - near), -(far + near) / (far - near)),
vec4(0, 0, 0, 1)
);
gl_Position = testmat * vec4(vertex, 0.0, 1.0);
f_texcoord = texcoord;
}
私は変換行列にあまり精通していないので、今学んでいます。正射影が必要な場合は、上記の行列を読んだことが正しいので、それを機能させることができないため、非常に混乱します。
これは問題を説明するための画像です:(テクスチャには透明な部分があることに注意してください)。
編集: これは、変更された値でどのように見えるかです: