gpt4 book ai didi

opengl - 将 OpenGL 1 纹理代码转换为 OpenGL 3

转载 作者:行者123 更新时间:2023-12-01 12:57:58 25 4
gpt4 key购买 nike

简单的问题:这段代码如何

glBindTexture(GL_TEXTURE_2D, texture_);
glColor4f(1,1,1,1);
glBegin(GL_QUADS);
glTexCoord2f(0, 1); glVertex2f(left_, top_);
glTexCoord2f(1, 1); glVertex2f(right_, top_);
glTexCoord2f(1, 0); glVertex2f(right_, bottom_);
glTexCoord2f(0, 0); glVertex2f(left_, bottom_);
glEnd();

使用顶点数组转换为现代 OpenGL 代码?

最佳答案

如果你只是想把这些线移植到顶点数组,很简单:

static const float texCoords[8] = { 
0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f };
float vertices[8] = {
left_, top_, right_, top_, right_, bottom_, left_, bottom_ };

glBindTexture(GL_TEXTURE_2D, texture_);
glColor4f(1,1,1,1);

glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glEnableClientState(GL_VERTEX_ARRAY);

glDrawArrays(GL_QUADS, 0, 4);

glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableCLientState(GL_VERTEX_ARRAY);

但是,这与现代 OpenGL 无关,实际上这段代码是完全有效的 OpenGL 1.1 代码。现代 OpenGL 不仅仅是关于立即模式下的顶点数组。它还涉及将顶点数据存储在顶点缓冲区对象 (VBO) 中,并使用着色器而不是旧的固定功能管道进行每项计算(如转换、光照、纹理等)。因此,真正将其移植到现代 OpenGL 并不是一个简单的问题。

由于您的问题表明您不了解所有这些,因此在这里解释它没有多大意义,因为它不只是您只需要替换的 5-10 行代码对于问题中的行。如果您想这样做,您应该引用一些关于现代 OpenGL 的严肃学习资源。

如果你想做的只是使用顶点数组而不是立即模式,那么上面的代码应该足够了,尽管我想在这个例子中它不会真正给你买任何东西。

关于opengl - 将 OpenGL 1 纹理代码转换为 OpenGL 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8583834/

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