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



我正试图将纹理移动到像素的中心,如此处所述。OpenGL像素空间中的纹理坐标,但我很难做到这一点。我们试图集中的像素是在纹理中还是在屏幕上?我们如何访问它们?这是我的顶点着色器:

"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命令对其进行缩放时,随机的行和列中似乎有两列或两行相同像素。

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

最新更新