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.