Войти
ПрограммированиеФорумГрафика

QGLContext не инициализируется (2 стр)

Страницы: 1 2
#15
22:15, 28 ноя. 2011

Может кто-нибудь расскажет как работать с текстурами через враппер QGLxxx (buffer, кажется). С вершинами все получилось, а текстуры не работают. Нигде примера нет. Везде через glXXX


#16
21:34, 30 ноя. 2011

Странно, вчера работало все, теперь стало сегфолтится, хотя именно в этой части ничего не менял(до этого просто делал без объекта QGLContext):

#include <GL3/gl3w.h>
#include "oglwindow.h"
#include <glm/glm.hpp>
OGLWindow::OGLWindow(QWidget *parent) :
    QGLWidget(parent)
{
    QGLContext *con;
    QGLFormat fm;
    fm.setAlpha(true);
    fm.setDoubleBuffer(true);
    fm.setProfile(QGLFormat::CoreProfile);
    fm.setVersion(3,3);
    fm.setSampleBuffers(true);
    fm.setAccum(true);
    fm.setDepth(true);
    fm.setDirectRendering(true);
    con->setFormat(fm);          //segfault. На setFormat(fm); - тоже
    con->create();
    con->makeCurrent();
}
GLuint VBO;
void OGLWindow::initializeGL()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glm::vec3 verts[1];
    verts[0] = glm::vec3(0.0f,1.0f,0.0f);
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER,VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(verts),verts,GL_DYNAMIC_DRAW);
    glEnableVertexAttribArray(0);
}
void OGLWindow::keyPressEvent(QKeyEvent *key)
{

}
void OGLWindow::resizeGL(int w, int h)
{
    gl3wInit();
    glViewport(0,0,(GLint)w,(GLint)h);
}
void OGLWindow::paintGL()
{
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,0,0);
    glDrawArrays(GL_POINTS,0,1);
    glDisableVertexAttribArray(0);
    swapBuffers();
}

#17
21:37, 30 ноя. 2011

Только я не вижу создание объекта QGLContext ?

#18
22:14, 30 ноя. 2011

Blew_zc
точно, теперь нормально. Правда, до этого и без объекта вообще сегфолтилось, а до того работало без него же, но это, уже, видимо, карма

#19
16:56, 1 дек. 2011

Можно так сделать

OGLWindow::OGLWindow(QWidget *parent) :
    QGLWidget(parent)
{
    QGLFormat fm;
    fm.setAlpha(true);
    fm.setProfile(QGLFormat::CoreProfile);
    fm.setVersion(3,3);
    fm.setSampleBuffers(true);
    fm.setAccum(true);
    setFormat(fm);
}

#20
22:25, 1 дек. 2011

vxstar
я делал, сегфолтилось

#21
18:40, 3 дек. 2011

Опять, что называется, без объявления войны сегодня при попытке запустить получил следующее:

Starting /home/harinezumi/brojects/train-build-desktop-Qt_in_PATH_Debug/train...
X Error: GLXBadDrawable 146
  Extension:    135 (Uknown extension)
  Minor opcode: 11 (Unknown request)
  Resource id:  0x5e00015
При этом в инициализации ничего не менял.
Не, похоже, с openGL лучше всего действительно работать через SDL, а не извращаться с Qt

#22
18:42, 3 дек. 2011

Q.S.
Посмотри стандартный пример gl 3.0 для иксов, под кт можно сделать вывод в дочернее окно и будет всё гуд.

#23
19:25, 3 дек. 2011

_vasa_
в смысле "в дочернее"? Пробовал сделать oglWidget внутри mainWindow, то же самое. Или надо было инициализировать контекст в конструкторе mainWindow, потом добавлять туда layout, в него - QGLWidget и там уже сразу функции вызывать? Геморно как-то.
Стандартный пример - этот? Но зачем тогда Qt?

#24
20:17, 3 дек. 2011

Да, пример этот. Кт чтобы гуи прилепить внешние, больше незачем тут. Если есть необходимость в обертке гл от кт, то это не подойдет.

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.