gpt4 book ai didi

OpenGL 纹理加载

转载 作者:行者123 更新时间:2023-12-02 12:09:44 26 4
gpt4 key购买 nike

大家晚上好,我在这里兜圈子,但我想我找错了地方。

我的问题是如何加载图像并将其应用到 openGL 中的基元。例如加载 bmp 或 jpg 并将其应用到 glutsolidsphere。

该解决方案是否仅限于一个平台,还是可以跨所有平台工作?

感谢您的帮助

最佳答案

好吧,如果你愿意,你可以编写你自己的 bmp 加载器。 Here是规范和一些代码。否则,我碰巧有一个 tga 加载器 here 。执行此操作后,它将返回无符号字符数组中的数据,也称为 GL_UNSIGNED_BYTE。

要从此数组创建 OpenGL 纹理,首先需要定义一个变量,该变量将用作 OpenGL 内存中该纹理的引用。

GLuint textureid;

然后,您需要告诉 OpenGL 为新纹理腾出空间:

glGenTextures(1, &textureid);

然后,您需要将该纹理绑定(bind)为当前使用的纹理。

glBindTexture(GL_TEXTURE_2D, textureid);

最后,您需要告诉 OpenGL 当前纹理的数据在哪里。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, your_data);

然后,当渲染图元时,通过再次调用 glBindTexture 将其应用到图元:


glBindTexture(GL_TEXTURE_2D, textureid);
glBegin(GL_QUAD);
glTexCoord2f(0.0, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glTexCoord2f(1.0, 0.0);
glVertex3f(1.0, 0.0, 0.0);
glTexCoord2f(1.0, 1.0);
glVertex3f(1.0, 1.0, 0.0);
glTexCoord2f(0.0, 1.0);
glVertex3f(0.0, 1.0, 0.0);
glEnd();

但是,任何时候将纹理应用于图元时,都需要纹理坐标数据和顶点数据,而 glutSolidSphere 不会生成纹理坐标数据。要对球体进行纹理处理,可以自己生成它,或者调用 texgen 函数,或者使用着色器。

关于OpenGL 纹理加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2035897/

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