qt - 尝试在 Qt5 中使用 OpenGL 作为纹理显示 QImage
问题描述
我是 OpenGl 的新手,并试图将 QImage 显示为纹理。
这是我的对象代码。但它只是显示一个没有图像的小窗口。
void Window::initializeGL()
{
initializeOpenGLFunctions();
QImage img("2.png");
m_imgSize = img.size();
img = img.convertToFormat(QImage::Format_RGB32);
glGenTextures(1, &m_texture);
glBindTexture(GL_TEXTURE_2D, m_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, m_imgSize.width(), m_imgSize.height(), 0, GL_BGRA, GL_UNSIGNED_BYTE, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
void Window::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D, m_texture);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_imgSize.width(), m_imgSize.height(), GL_BGRA, GL_UNSIGNED_BYTE, 0);
update();
}
并将其显示为
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSurfaceFormat format;
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setVersion(3, 2);
format.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(format);
Window objectWindow;
objectWindow.show();
return app.exec();
}
解决方案
推荐阅读
- c# - C# HttpClient.PostAsync doesn't return or throw an error
- reactjs - TypeError:无法读取未定义 Reactjs 的属性“长度”
- java - Arabic and English combination recrod retrieval from oracle java
- asp.net - 如何从每个输入文件中获取提交的文件数
- javascript - Cannot set headers after they are sent to the client and Unhandled promise rejection
- python - RuntimeError CUDA initialization Failed only in Python
- reactjs - How to parse and render text data from TinyMCE
- encryption - TPM backed Certificate, alternative
- r - Cannot use if else with dplyr
- authentication - 如何在 ASP.NET Core 3.0 中获取 Windows 用户名