使用顶点着色器将纹理移动到像素中心

时间:2012-09-04 13:16:28

标签: opengl-es-2.0 vertex-shader

我正在尝试将纹理移动到像OpenGL Texture Coordinates in Pixel Space所述的像素中心,但我正在努力这样做。我们试图在纹理或屏幕上居中的像素是?我们如何访问它们?这是我的顶点着色器:

"uniform mat4 " + ShaderProgramConstants.UNIFORM_MODELVIEWPROJECTIONMATRIX + ";\n" +
"attribute vec4 " + ShaderProgramConstants.ATTRIBUTE_POSITION + ";\n" +
"attribute vec4 " + ShaderProgramConstants.ATTRIBUTE_COLOR + ";\n" +
"attribute vec2 " + ShaderProgramConstants.ATTRIBUTE_TEXTURECOORDINATES + ";\n" +
"varying vec4 " + ShaderProgramConstants.VARYING_COLOR + ";\n" +
"varying vec2 " + ShaderProgramConstants.VARYING_TEXTURECOORDINATES + ";\n" +

"void main() {\n" +
"   " + ShaderProgramConstants.VARYING_COLOR + " = " + ShaderProgramConstants.ATTRIBUTE_COLOR + ";\n" +
"   " + ShaderProgramConstants.VARYING_TEXTURECOORDINATES + " = " + ShaderProgramConstants.ATTRIBUTE_TEXTURECOORDINATES + ";\n" +
    "   gl_Position = " + ShaderProgramConstants.UNIFORM_MODELVIEWPROJECTIONMATRIX + " * " + ShaderProgramConstants.ATTRIBUTE_POSITION + ";\n" +
"}"

我是新手,打开GL并刚刚开始研究顶点着色器,所以任何建议或提示都会非常感激。

编辑:我遇到的问题是,我的纹理中的像素在缩放时会变形。普通纹理看起来很好,但是当它们使用4x4矩阵(模型视图矩阵)上的scaleM命令进行缩放时,看起来随机行和列中有两列或两行相同像素。

1 个答案:

答案 0 :(得分:0)

结果导致失真的比例因子。我所要做的就是确保纹理中的每个像素在显示器上具有相同数量的像素,并且失真消失。