我只是尝试为一个项目设置CMake,使用QT5.8在OSX塞拉利昂中执行OpenGL操作。在这里你可以看到我的主CMakeLists
cmake_minimum_required (VERSION 3.8)
set (PROJECT_NAME "FluidEngine")
project (${PROJECT_NAME})
set (CMAKE_PREFIX_PATH "/Users/BRabbit27/Qt/5.8/clang_64")
set (CMAKE_AUTOMOC ON)
find_package (Qt5Widgets)
find_package (Qt5Gui)
find_package (Qt5OpenGL)
set (CPP_SOURCES "")
set (HPP_SOURCES "")
set (INCLUDE_PATHS "")
add_subdirectory (src)
include_directories (${INCLUDE_PATHS} ${OPENGL_INCLUDE_DIRS})
add_executable (${PROJECT_NAME} ${CPP_SOURCES} ${HPP_SOURCES})
target_link_libraries (${PROJECT_NAME} Qt5::Widgets Qt5::Gui Qt5::OpenGL )它完美地配置了xcode项目,没有错误。然后,我绘制基本三角形的代码如下所示:
GLWindow::GLWindow(QWidget* parent) : QOpenGLWidget(parent)
{}
void GLWindow::initializeGL()
{
initializeOpenGLFunctions();
GLfloat verts[] =
{
0.f, 1.f,
-1.f, -1.f,
1.f, -1.f
};
GLuint myBufferID;
glGenBuffers(1, &myBufferID);
glBindBuffer(GL_ARRAY_BUFFER, myBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
}
void GLWindow::resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
}
void GLWindow::paintGL()
{
glDrawArrays(GL_TRIANGLES, 0, 3);
}我得到的是一扇黑色的窗户。我从本视频教程得到了这段代码
我是在cmake文件中遗漏了什么,还是在OS中丢失了一些使用OpenGL的微妙内容?由于OS现在正在推广金属,也许必须启用一些东西,但我不知道是什么。
我已经尝试过设置主函数中使用的OpenGL版本。
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QSurfaceFormat format;
format.setVersion(4, 1);
format.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(format);
GLWindow glwindow;
glwindow.show();
return app.exec();
}有什么想法吗?
更新
将项目添加到github中,您可以使用在这里克隆它在计算机中进行测试。
我构建项目的方式只是cmake -GXcode ..,假设我在/path/to/project/build_xcode目录中。
希望这能帮助你再生产,也许能给我一个线索,我可能做错了什么。
发布于 2017-06-04 20:26:07
我检查了所有的错误消息,然后从那里找到解决方案。幸运的是,已经有人这样回答了一个相关的问题,并有了解决问题的办法。您可以在这里找到完整的答案,跟随glEnableVertexAttribArray的操作
简称
您在OS上看到了这个错误,因为它只支持使用OpenGL 3.x或更高版本的OpenGL核心配置文件。您的代码不符合核心配置文件。您很可能在Windows上使用兼容性配置文件。 具体来说,核心概要文件要求为所有与顶点相关的调用绑定一个顶点数组对象(VAO)。因此,在调用
glEnableVertexAttribArray()或其他类似函数之前,您需要创建并绑定一个VAO。
https://stackoverflow.com/questions/44292869
复制相似问题