Я пытаюсь изучить OpenGL через учебник в youtube под названием Графика Программирование с OpenGL и Qt. Я сделал все точно в соответствии с этим учебником, но я не могу отобразить свой треугольник. Вот мой код:Невозможно отобразить сцену в OpenGL
#include <GL/glew.h>
#include "GlWindow.h"
void GlWindow::initializeGL(){
glewInit();
GLfloat verts[] = {
0.0f, -1.0f,
-1.0f,-1.0f,
1.0f, -1.0f
};
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::paintGL(){
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_TRIANGLES, 0, 3);
}
и вот мой GLWindow.h код:
#ifndef GLWINDOW_H
#define GLWINDOW_H
#include <QtOpenGL/QGLWidget>
class GlWindow : public QGLWidget{
public:
protected:
void initializeGL();
void paintGL();
};
#endif // GLWINDOW_H
И мой main.cpp
#include <QApplication>
#include <GlWindow.h>
int main(int argc, char *argv[]){
QApplication app(argc, argv);
GlWindow glWindow;
glWindow.show();
return app.exec();
}
Но выход только черное окно. Если я также использую glClearColor(1.0f,0.0f,0.0f,1.0f);
, у меня будет красное окно. Но я не знаю, почему мой треугольник не показан.
Edit: Im используя убунту 15 и когда я бегу glx info | grep version
я получаю это:
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.5.2
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 10.5.2
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.5.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
Мы говорим OpenGL> = 2? Где ваша шейдерная программа? – peppe
@peppe Я думаю, что моя версия OpenGL - это версия версии OpenGL: 3.0. Учебник, за которым я следую, не использует никаких шейдеров. – MoNo
Qt уже обрабатывает загрузку функции OpenGL. И QGLWidget устарел. Вместо этого используйте QOpenGLWidget. – Poriferous