- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何将纹理应用于 glutSolidSphere?
这是我已经尝试过但不起作用的方法:
GLuint textureid;
glGenTextures(1, &textureid);
glBindTexture(GL_TEXTURE_2D, textureid);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, "stone.tga");
// Planet
glDisable(GL_LIGHTING);
glBindTexture(GL_TEXTURE_2D, textureid);
glutSolidSphere(35.0f, 30, 17);
glEnable(GL_LIGHTING);
谁能指导我如何加载纹理并启用它。
我听说 glutSolidSphere 已经发出纹理坐标,所以我不需要在那里做任何特别的事情。
最佳答案
您的问题是您实际上并未使用 glTexImage2D
创建纹理。最后一个参数应该是 byte[]
像素 channel 颜色,顺序为红色、绿色、蓝色、Alpha(由您的其他参数指定 - GL_UNSIGNED_BYTE
和 GL_RGBA
),而不仅仅是文件名。
OpenGL 不知道文件是什么,如何从系统特定的文件系统读取文件,或者如何解析 TGA 文件格式。它需要原始颜色数据,因此您需要加载和解析图像并将 byte[]
传递给 OpenGL(从技术上讲,指向第一个元素的指针是 void*
) .有several guides为您提供解析 TGA 文件所需的最少代码,但您也可以使用像 FreeImage 这样的库处理加载您的纹理,它不仅适用于 TGA。
关于c++ - OpenGl - 纹理 glutSolidSphere?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8767667/
我必须在类似“ Spring 质量”的系统的 3D 物理模拟中绘制大量球体。 我想知道一种绘制球体的有效方法,而不必在模拟的每一步都编译显示列表(每一步可能从毫秒到秒不等,具体取决于计算中涉及的物体数
我需要将地球纹理添加到 glutSolidSphere。问题是我无法弄清楚如何使纹理在整个球体上拉伸(stretch)并且仍然能够旋转。 我们正在启用纹理。 glTexGeni(GL_S, GL_TE
嗨,我的程序应该在屏幕中央显示一个纯红色的球体,我得到的只是球体的边界: int main(int argc, char **argv) { glutInit(&argc, argv); gl
当我使用此代码示例时,我得到一个平坦的白色球体。 我期待一个从侧面发光并旋转的球体。 #include #include int angle = 0; int _refreshmillisecon
我需要向 glutSolidSphere 添加地球纹理。问题是我无法弄清楚如何使纹理在整个球体上拉伸(stretch)并且仍然能够旋转。 我们正在启用纹理。 glTexGeni(GL_S, GL_TE
如何将纹理应用于 glutSolidSphere? 这是我已经尝试过但不起作用的方法: GLuint textureid; glGenTextures(1, &textureid);
我正在创建一个行星模拟,其中有 glutSolidSpheres 围绕太阳运行并且应该有跟踪线跟随它,使用 GL_LINE_STRIP 创建。 我遇到的问题是,这条轨迹并没有直接跟随行星在它后面,它看
我是一名优秀的程序员,十分优秀!