OpenGL CMake-el

Egy új projektet akartam létrehozni, ahol tesztelni tudok egy fizikai környezetet. CMake-ben nem vagyok valami profi, de másfél nap google-zás után sem jövök rá, hogy mi lehet a hiba.

Szóval a kód:

CMakeLists.txt:
---------------

cmake_minimum_required(VERSION 2.8.8)
project(SandboxGame)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt5OpenGL REQUIRED)
find_package(GLEW REQUIRED)
find_package(OpenGL REQUIRED)

include_directories(${GLEW_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS})

add_executable(SandboxGame SandboxGame.cpp MyGlWindow.cpp)
qt5_use_modules(SandboxGame OpenGL)
target_link_libraries(SandboxGame ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES})

MyGlWindow.h:
-------------

#ifndef SANDBOX_GLWINDOW_H
#define SANDBOX_GLWINDOW_H

#include <QGLWidget>

class MyGlWindow : public QGLWidget
{
Q_OBJECT

protected:
void initializeGL();
void paintGL();

private:
GLuint vertex_buffer_id;
};

#endif /* SANDBOX_GLWINDOW_H */

MyGlWindow.cpp:
---------------

#include <GL/glew.h>
#include <cassert>
#include "MyGlWindow.h"

void MyGlWindow::initializeGL()
{
GLenum error_code = glewInit();
assert(error_code == 0);

glGenBuffers(1, &vertex_buffer_id);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_id);

float verts[] =
{
+0.0f, +0.1f,
-0.1f, -0.1f,
+0.1f, -0.1f,
};

glBufferData(GL_ARRAY_BUFFER, sizeof(verts), verts, GL_STATIC_DRAW);
}

void MyGlWindow::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
}

SandboxGame.cpp:
----------------

#include <QApplication>
#include "MyGlWindow.h"

int main(int argc, char **argv)
{
QApplication app(argc, argv);
MyGlWindow myGlWindow;
myGlWindow.show();

return app.exec();
}

Ezt azzal a céllal raktam így össze, hogy tudjam minden rendben működik a gépemen. Lefordul, linkel. Amikor futtatom, akkor egy fekete ablak jelenik meg. Amit viszont szerintem mutatnia kellene, az egy fehér háromszög az ablak közepén.

A QT példaprogramjai működnek, de az nem használja a glew könyvtárat.

Valami ötlet, hogy mi lehet a gond.

Hozzászólások

A cmake-hez ennek szerintem semmi köze.

Én ehhez hasonló dolgokkal ott szoptam még tanulóéveimben ;), hogy rossz irányba néz a kamera, nem lát el odáig, nincsen fény, nincsen anyag az ojjektumon, valami takarja, rossz a modell, ilyesmi... Guiba ágyazásnál meg külön kell megkérni, hogy rendereljen, pumpálni neki eseményeket, meg ilyesmi. :D

Frissítés: Megoldásom a problémára Qt-val nincsen. De GLFW-vel hasonló kód működik. Szóval vagy Qt felülír valamilyen definíciót, és/vagy a glw nem inicializálja Qt-vel rendesen az OpenGL-t. Ezek csak tippek, ha majd lesz időm azért utánajárok.

Egyébként a Qt- dokumentáció szerint a QMainWindow OpenGL contextjét kéne használni, minden egyéb deprecated. Viszont nekem nem annyira fontos a Qt, csak gyorsan akartam valami esemény vezérlet ablakot. A teszthez így most inkább használom a GLFW-t.