Qt5 - glTexStorage2D/glBindImageTexture undefined?
Qt5 - glTexStorage2D/glBindImageTexture undefined?
我正在使用Qt 5.7.0与OpenGL 4.4,我试图移植一些旧代码与Qt一起工作。据我所知,Qt没有自己的方式来处理着色器纹理,所以我使用以下代码在我的GLEW,非Qt项目中工作良好:
float* data = new float[IMAGE_WIDTH * IMAGE_HEIGHT];
for (int i = 0; i < IMAGE_WIDTH * IMAGE_HEIGHT; ++i)
data[i] = 0.f;
GLuint tex[1];
glGenTextures(1, tex);
glBindTexture(GL_TEXTURE_2D, tex[0]);
glTexStorage2D(GL_TEXTURE_2D, 1, GL_R32F, IMAGE_WIDTH, IMAGE_HEIGHT);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, IMAGE_WIDTH, IMAGE_HEIGHT, GL_RED, GL_FLOAT, data);
glBindImageTexture(0, tex[0], 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32F);
delete[] data;
显然glTexStorage2D
和glBindImageTexture
没有定义。我看过文件,它们应该存在。我试过#include
, QOpenGLFunctions_4_4_Core
, QOpenGLFunctions_4_2_Core
, QOpenGLTexture
和QOpenGLFunctions
,但都没有解决问题。我甚至查看了QOpenGLFunctions_4_4_Core
:
inline void QOpenGLFunctions_4_4_Core::glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{
d_4_2_Core->f.TexStorage2D(target, levels, internalformat, width, height);
}
即使创建一个实例也会给我一个错误:
QOpenGLFunctions_4_4_Core gl;
gl.glTexStorage2D((GL_TEXTURE_2D, 1, GL_R32F, IMAGE_WIDTH, IMAGE_HEIGHT);
崩溃并出现"抛出异常:读访问冲突"。这->d_4_2_Core是nullptr。"
是否有a)任何方法来解决这个问题;或者更好的是b)一个Qt的方式做图像加载/存储?
您应该通过QOpenGLContext::versionFunctions()
获取指向QOpenGLFunctions_4_4_Core
对象的指针。或者,您可以创建自己的对象,但随后必须使用initializeOpenGLFunctions()
成员函数手动加载函数指针,而上下文是当前的。
继承特定版本的函数对我来说是有效的。
class MyWidget: public QOpenGLWidget, protected QOpenGLFunctions_4_4_Core
{
...
}
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- "Undefined class"作为is_base_of的论据
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- VSCode C/C++ Intellisense issue: Undefined identifiers (Linu
- 与卡特琳娜一起卷曲C++失败并得到"Undefined symbols for architecture x86_64"
- "Undefined symbols for architecture x86_64" 在 SDL 2 (macOS) 中
- 为什么在使用 SDL2 时仍然收到'undefined reference'链接器错误?
- 从 C 可执行文件加载动态库时收到错误C++"undefined symbol"
- 为什么即使在定义之后仍存在"Identifier is undefined error "?
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- 为什么当我在 C 程序中链接静态库时会"undefined symbol"?
- Vector, assign() function Undefined Behavior
- OpenCV imwrite 函数导致'undefined symbol'
- Libcurl c++ "undefined reference to" (Windows/MinGW/g++)
- 尝试使用 extern "C" 调用 C 中的C++方法,得到"undefined reference to"对象的链接器错误
- build error : undefined reference to `yyFlexLexer::yyFlexLex
- 错误说"camera is undefined",但我确实定义了它