【发布时间】:2017-11-01 17:40:40
【问题描述】:
我刚刚尝试为使用 Qt 5.8 的项目设置 CMake,以便在 OS X Sierra 中执行 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);
}
我得到的是一个黑色的窗口。我从this video tutorial得到这个代码
我是否遗漏了我的 cmake 文件中的某些内容或 OS X 中使用 OpenGL 的某些微妙内容?由于 OS X 现在正在推广 Metal,也许必须启用某些东西,但我不知道是什么。
我已经尝试设置主函数中使用的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,您可以clone it here在您的机器上进行测试。
我构建项目的方式只是 cmake -GXcode .. 假设我在 /path/to/project/build_xcode 目录中。
希望这可以帮助您重现,也许可以让我知道我可能做错了什么。
【问题讨论】: