首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在OpenGL中使用+QT5.8?

如何在OpenGL中使用+QT5.8?
EN

Stack Overflow用户
提问于 2017-05-31 19:07:01
回答 1查看 702关注 0票数 0

我只是尝试为一个项目设置CMake,使用QT5.8在OSX塞拉利昂中执行OpenGL操作。在这里你可以看到我的主CMakeLists

代码语言:javascript
复制
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项目,没有错误。然后,我绘制基本三角形的代码如下所示:

代码语言:javascript
复制
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版本。

代码语言:javascript
复制
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目录中。

希望这能帮助你再生产,也许能给我一个线索,我可能做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-04 20:26:07

我检查了所有的错误消息,然后从那里找到解决方案。幸运的是,已经有人这样回答了一个相关的问题,并有了解决问题的办法。您可以在这里找到完整的答案,跟随glEnableVertexAttribArray的操作

简称

您在OS上看到了这个错误,因为它只支持使用OpenGL 3.x或更高版本的OpenGL核心配置文件。您的代码不符合核心配置文件。您很可能在Windows上使用兼容性配置文件。 具体来说,核心概要文件要求为所有与顶点相关的调用绑定一个顶点数组对象(VAO)。因此,在调用glEnableVertexAttribArray()或其他类似函数之前,您需要创建并绑定一个VAO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44292869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档