gpt4 book ai didi

android - 颠倒的纹理? | OpenGL-ES 2.0 (安卓)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:13 25 4
gpt4 key购买 nike

我试图将我的纹理映射到一个用 opengl es 2.0 制作的正方形,当我这样做时,纹理出现颠倒,我的映射有误吗?或者我画它的方式?这是它的外观图片:

Upside Down

这是我的 onDrawFrame() 代码

public void onDrawFrame(GL10 glUnused) {
GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
GLES20.glUseProgram(mProgram);
GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA);
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID);

mTriangleVertices.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT,
false, TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);

mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
GLES20.glEnableVertexAttribArray(maPositionHandle);

GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT,
false, TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);

GLES20.glEnableVertexAttribArray(maTextureHandle);


Matrix.orthoM(mProjMatrix, 0, 0, 200, 0, 100, -5, 5);
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mProjMatrix, 0);
GLES20.glDrawElements(GLES20.GL_TRIANGLES, drawOrder.length,
GLES20.GL_UNSIGNED_SHORT, drawListBuffer);
}

正方形和映射 UV 的坐标是:

    private final float[] mTriangleVerticesData = {
// X, Y, Z, U, V
0f, 0f, 0, 0.0f, 0.0f,
50f, 0f, 0, 1.0f, 0.0f,
50f, 50f, 0, 1.0f, 1.0f,
0f, 50f, 0.0f, 0.0f, 1.0f };
private short drawOrder[] = { 0, 1, 2, 0, 2, 3 };

我怎样才能获得右侧向上的 View ?

最佳答案

这看起来像是一个常见的错误。您需要考虑 OpenGL 的纹理原点位于左下角(而不是左上角)这一事实。

您可以采取一些措施来弥补:

  • 从下往上读取像素线;
  • 交换像素线;
  • 或者交换纹理Y坐标;

您可以尝试在着色器中交换纹理坐标(来源:http://en.wikibooks.org/wiki/OpenGL_Programming/Modern_OpenGL_Tutorial_06)

void main(void) {
vec2 flipped_texcoord = vec2(f_texcoord.x, 1.0 - f_texcoord.y);
gl_FragColor = texture2D(mytexture, flipped_texcoord);
}

关于android - 颠倒的纹理? | OpenGL-ES 2.0 (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com