Autor Wątek: Qt z OpenGL 4.5  (Przeczytany 598 razy)

Offline Montjet

  • Użytkownik

# Październik 15, 2016, 10:40:26
#reply
Udało mi się dopiero z profilem COMPATIBILITY,  z CORE nie działa :|
Pytanie więc dlaczego?


________________________________
Witam,
próbuję przejść z OpenGL do Qt - niestety nie wiem dlaczego aplikacja nie startuje - po wywołaniu prostej funkcji glCreateShader() - w zasadzie z OpenGL (prócz przygotowania, czyszczenia bufora itd.) jest to pierwsza funkcja.

Okienko OpenGL jest Widget'em - klasa wygląda tak (glwidget.h):
#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QtWidgets/QOpenGLWidget>
#include <QtGui/QOpenGLFunctions>



class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);
~GLWidget();

protected:

void initializeGL();
void paintGL();
void resizeGL(int width, int height);
};

#endif

glwidget.cpp:
#include "glwidget.h"
#include <QtGui/QOpenGLFunctions_4_5_Core>


GLWidget::GLWidget(QWidget *parent)
: QOpenGLWidget(parent)
{

}

GLWidget::~GLWidget()
{
}


void GLWidget::initializeGL()
{
initializeOpenGLFunctions();
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);

QOpenGLFunctions_4_5_Core *f = QOpenGLContext::currentContext()->versionFunctions<QOpenGLFunctions_4_5_Core>();
unsigned kj = f->glCreateShader(GL_VERTEX_SHADER);  // przez to aplikacja nie startuje
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


}

1. Co robię źle? (bez użycia funkcji glCreateShader okienko pojawia się)
2.
Okienko z poprzedniego projektu OpenGL było tworzone za pomocą GLEW.
Czy używając funkcji typu glCreateShader zawsze muszę to robić przy pomocy zmiennej "QOpenGLFunctions_4_5_Core *f" ??
Nie da się jakoś tego pominąć, tak żebym nie musiał zbyt dużo zmian wprowadzać w poprzednim kodzie?

#edit
Co do main - wygląda tak:
#include "window.h"

Window::Window(QWidget *parent)
: QMainWindow(parent)
{
QSurfaceFormat format;
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setVersion(4, 5);
format.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(format);

ui.setupUi(this);
}

Window::~Window()
{

}
« Ostatnia zmiana: Październik 15, 2016, 21:31:03 wysłana przez Montjet »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych