gpt4 book ai didi

c - 纹理四边形(三角形带)OpenGL ES 2.0

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:49 24 4
gpt4 key购买 nike

<分区>

我有 256*256 的纹理,一切都很好,但我试图在整个四边形上映射整个纹理的部分被毁了。
我的四边形从左到右只有 1/5 纹理,其余部分是黑色,这意味着那里没有纹理。
纹理部分总体上正常工作。
glFrontFace 保持不变(默认)
使用以下方法创建的纹理:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

GLfloat quad_pos[] =
{
0.5, 0.5, 0.0,
-0.5, 0.5, 0.0,
0.5,-0.5, 0.0,
-0.5,-0.5, 0.0
};

//Maybe i need 5 and 6 verticles tex coords?
GLfloat quad_tex[]=
{
0.0, 1.0,
0.0, 0.0,
1.0, 1.0,
1.0, 0.0
};

GLfloat quad_col[]=
{
0.0, 1.0, 1.0, 1.0,
1.0, 0.0, 1.0, 1.0,
1.0, 1.0, 0.0, 1.0,
0.0, 0.0, 1.0, 1.0
};

//In draw_quad method()
//Binding texture and setting uniforms/attributes skipped

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

顶点着色器

attribute vec4 av_col;
attribute vec4 av_pos;
attribute vec2 av_tex;
varying vec4 vv_col;
varying vec2 vv_tex;
uniform mat4 um_mvp;
void main()
{
vv_col = av_col;
vv_tex = av_tex;
gl_Position = um_mvp * av_pos;
}

片段着色器

precision lowp float;
uniform sampler2D us_tex;
varying vec4 vv_col;
varying vec2 vv_tex;
void main()
{
gl_FragColor = (vv_col * texture2D(us_tex, vv_tex));
}

如果将 tex 坐标更改为

GLfloat quad_tex[]=
{
0.0, 0.2,
0.0, 0.0,
0.2, 0.2,
0.2, 0.0
};

四边形将具有完整的纹理和颜色,但纹理将被放大(我的世界像素风格)。

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