我刚开始学习OpenGL。在理解图像和纹理时感到困惑。
- 图像只用于给2D场景着色吗?在3D场景中使用顶点和纹理来进行着色吗?(我的意思是在
OpenGL编程指南
书的操作顺序中,首先有顶点数据和图像数据。我们可以将图像数据用作纹理,也可以不用。当不用作纹理时,它只能用作场景的背景,对吗
?) - 纹理操作比图像操作更快吗?
我刚开始学习OpenGL。在理解图像和纹理时感到困惑。
OpenGL编程指南
书的操作顺序中,首先有顶点数据和图像数据。我们可以将图像数据用作纹理,也可以不用。当不用作纹理时,它只能用作场景的背景,对吗
?)在OpenGL中,图像是RAM中的像素数据数组。例如,您可以使用标准C函数在RAM中加载一个smiley.tga文件,这就是一张图像。当图像数据由OpenGL加载到视频内存中时,就形成了一种纹理。可以通过以下方式完成此操作:
GLuint *texID;
glGenTextures(1, (GLuint*)&texID);
glBindTexture(GL_TEXTURE_2D, texID);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, imagedata);
当图像被加载到视频内存中后,RAM中的原始图像数据可以被释放。现在,OpenGL可以使用这个纹理。