gpt4 book ai didi

opengl - 将纹理传递给着色器

转载 作者:行者123 更新时间:2023-12-04 19:15:19 25 4
gpt4 key购买 nike

我一直在试图弄清楚如何将纹理发送到着色器,但我无法弄清楚。我的代码看起来不错,但我的第二个纹理是黑色的。

void setShaders() {

glEnable (GL_TEXTURE_2D);
v2 = glCreateShader(GL_VERTEX_SHADER);
f2 = glCreateShader(GL_FRAGMENT_SHADER);


load_shader(v2,"a.vert");
load_shader(f2,"a.frag");

glCompileShader(v2);
glCompileShader(f2);

p = glCreateProgram();

glAttachShader(p,v2);
glAttachShader(p,f2);

GLubyte* textura=LoadImageToTexture("d.jpg");
GLubyte* textura2=LoadImageToTexture("n.jpg");

GLuint texturaID[2];
glGenTextures(2, texturaID);

glBindTexture(GL_TEXTURE_2D, texturaID[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA, w, h, 0, GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)textura );


glBindTexture(GL_TEXTURE_2D, texturaID[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D,1,GL_RGBA, w, h, 0, GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)textura2 );


glLinkProgram(p);
glUseProgram(p);
GLint baseImageLoc = glGetUniformLocation(p, "tex");
GLint normImage = glGetUniformLocation(p, "norm");
glUniform1i(baseImageLoc, 0);
glUniform1i(normImage, 1);

glActiveTexture(GL_TEXTURE0 + 0);
glBindTexture(GL_TEXTURE_2D, texturaID[0]);

glActiveTexture(GL_TEXTURE0 + 1);
glBindTexture(GL_TEXTURE_2D, texturaID[1]);

}

着色器
[顶点]
void main()
{

gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}

uniform sampler2D tex;
uniform sampler2D norm;

[fragment]
void main()
{
vec4 color = texture2D(tex,gl_TexCoord[0].st);
vec4 color2 = texture2D(norm,gl_TexCoord[0].st);
gl_FragColor = color*color2;
}

编辑 这里是恶魔!!!
   glTexImage2D(GL_TEXTURE_2D,**1**,GL_RGBA, w, h, 0, GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)textura2 );

而不是 1 应该是0。

最佳答案

您的第二个纹理似乎以错误的方式创建:

glTexImage2D(GL_TEXTURE_2D,1,...);

应该
glTexImage2D(GL_TEXTURE_2D,0,...);

至于你的第二个问题,即使我不确定是否正确;当您注释这些行时,您实际上将统一值保留为其默认值,即 0。因此净效果与
glUniform1i(baseImageLoc, 0);

关于opengl - 将纹理传递给着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10398965/

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