我有一个小问题,当我有一个纹理并且我想用 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 范围内的四边形
我的渲染功能
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();
为什么纹理总是渲染得那么小,即使纹理更高或具有相同的大小?