2017-05-31 7 views
0

Qt 5.8を使ってOS X SierraでOpenGLの処理を行うプロジェクトでCMakeをセットアップしようとしましたが、ここで私のメインのCMakeListsを見ることができますOS X SierraでCmake for OpenGL + Qt 5.8を使用するには?

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

OpenGLを使用するには、私のcmakeファイルやOS Xで微妙なものがありますか? 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のに

UPDATE

追加のプロジェクトは、あなたがclone it hereあなたのマシンでテストすることができます。

私がプロジェクトを構築する方法は、ちょうどcmake -GXcode ..だと私は/path/to/project/build_xcodeディレクトリにいると仮定しています。

これは、私が間違っている可能性のあることを再現し、おそらく私に手掛かりを与えるのを助けることを望みます。

答えて

0

すべてのエラーメッセージを確認し、解決策を見つけるための方法を見つけました。幸いにも誰かが既にSOで関連する問題を回答しており、その問題を解決していました。あなたはOpenGLの3.xまたはそれ以降を使用している場合、それが唯一のOpenGL コアプロファイルをサポートしているので、あなたはOS X上、このエラーを見ている短い

はこちらOpenGL: INVALID_OPERATION following glEnableVertexAttribArray

完全な答えを見つけることができます。あなたのコードは コアプロファイルに準拠していません。 Windowsで互換性 プロファイルを使用した可能性が最も高いです。

具体的には、コアプロファイルでは、すべての頂点に関連するコールに対して、 にバインドするVertex Array Object(VAO)が必要です。したがって、 glEnableVertexAttribArray()、または他の同様の関数を呼び出す前に、 はVAOを作成してバインドする必要があります。

関連する問題