【问题标题】:Using vertex shader to move texture to pixel center使用顶点着色器将纹理移动到像素中心
【发布时间】:2012-09-13 06:27:21
【问题描述】:

我正在尝试将我的纹理移动到像素的中心,如此处所述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 命令缩放时,看起来随机行和列中有两列或两行相同的像素。

【问题讨论】:

  • 您能否提供更多有关实际问题的背景信息?我不确定您为什么认为需要在顶点着色器中执行此操作。如果你只是想确保你的纹理在纹素的中心被采样,那么我有一个带有描述性图像的旧帖子可以帮助你:stackoverflow.com/a/11458037/1236185

标签: opengl-es-2.0 vertex-shader


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多