テクスチャがあり、opengl を使用して画面にレンダリングしたい場合、テクスチャが画面と同じサイズであってもテクスチャが小さくレンダリングされます。テクスチャを画面にレンダリングするには、次のシェーダーを使用します。
頂点シェーダー:
#version 120
attribute vec2 point;
varying vec2 fr_point;
void main(void) {
gl_Position = vec4(point, 0.0, 1.0);
fr_point = point;
}
フラグメント シェーダー:
#version 120
varying vec2 fr_point;
uniform sampler2D texture;
void main(void) {
gl_FragColor = texture2D(texture, fr_point);
};
頂点属性 quad は -1 と 1 の範囲の quad です
私のレンダリング機能
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(p);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
glUniform1i(uni_texture, 0);
glEnableVertexAttribArray(att_point);
GLfloat triangle_vertices[] = {
-1., -1.,
-1., 1.,
1., -1,
1., 1,
-1., 1.,
1., -1.
};
glVertexAttribPointer(
att_point,
2,
GL_FLOAT,
GL_FALSE,
0,
triangle_vertices
);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableVertexAttribArray(att_point);
glutSwapBuffers();
テクスチャの高さまたはサイズが同じであっても、テクスチャが常に非常に小さくレンダリングされるのはなぜですか?