OpenGL是否具有从资源加载纹理的功能?

OpenGL是否具有从资源加载纹理的功能?,opengl,textures,loadimage,Opengl,Textures,Loadimage,OpenGL是否有一个从资源文件加载纹理的简单函数,这样我就可以摆脱(HBITMAP)LoadImage()我使用的函数 作为DirectX中的一个示例,可以通过D3DXCreateTextureFromResourceA()完成函数。使用Qt,您会发现使用OpenGL编写代码很容易 您可以加载许多不同格式的图像 QString fileName = QFileDialog::getOpenFileName(this, "open image file", ".", "Image files (

OpenGL是否有一个从资源文件加载纹理的简单函数,这样我就可以摆脱
(HBITMAP)LoadImage()我使用的函数


作为DirectX中的一个示例,可以通过
D3DXCreateTextureFromResourceA()完成函数。

使用Qt,您会发现使用OpenGL编写代码很容易

您可以加载许多不同格式的图像

QString fileName = QFileDialog::getOpenFileName(this, "open image file", ".", "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)");
QImage image;

image.load(fileName);
此外,将普通图像更改为OpenGL纹理也很容易

QImage textureImage = QGLWidget::convertToGLFormat(image);
GLuint glTexture;

glGenTextures(1, &glTexture);
glBindTexture(GL_TEXTURE_2D, glTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureImage.bits());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

OpenGL与资产加载无关。它只知道画像素。就是这样。您必须使用外部LIB将资产加载到内存中。@MichaelIV:也就是说,完全可以通过资源加载来实现资产。事实上,在我最早的OpenGL程序中,我确实做到了这一点(尽管代码很糟糕)。@datenwolf当然!,但是许多刚刚接触OpenGL的人错误地认为API提供了资产加载功能。