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.
- 4060 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
Egyébként szerintem se a cmake a hibás. Amire gyanakszom, hogy valamelyik glew makrót a Qt felülírja. Ha lesz rá idöm, akkor este kipróbálom Qt nélkül.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni