Russian Qt Forum
Сентябрь 29, 2024, 08:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt и OpenGL  (Прочитано 1858 раз)
hemul
Гость
« : Февраль 14, 2013, 16:57 »

Код:
class MyOGL : public QGLWidget
{
protected:
    virtual void initializeGL();
    virtual void resizeGL(int nWidth,int nHeight);
    virtual void paintGL();
public:
    MyOGL(QWidget *parent = 0);
};
Код:
MyOGL::MyOGL(QWidget *parent) : QGLWidget(parent)
{

}

void MyOGL::initializeGL()
{
    qglClearColor(Qt::black);
    glViewport(0,0,200,200);
}
void MyOGL::resizeGL(int nWidth,int nHeight)
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glViewport(0,0,(GLint)nWidth,(GLint) nHeight);
    glOrtho (0,100,100,0,-1,-1);

}

 void MyOGL::paintGL()
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glBegin(GL_QUADS);

         glColor3f(1,0,0);
         glVertex2f(0,0);

         glColor3f(1,0,0);
         glVertex2f(0,200);

         glColor3f(1,0,0);
         glVertex2f(100,200);

         glColor3f(1,0,0);
         glVertex2f(100,0);


     glEnd();


}
Код:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MyOGL test;
    test.resize(200,200);
    test.show();

    return a.exec();
}

Мой код (пример из книги Шлее 4.5 Qt) . Как я ожидаю, окно должно быть разделено на две части - левый прямоугольник 100x200 черный фон, правый прямоугольник отрисованый прямоугольник, но в итоге получается совсем другое (см вложение). В чем моя ошибка?
Записан
ssoft
Гость
« Ответ #1 : Февраль 15, 2013, 08:39 »

Все дело в glOrtho (0,100,100,0,-1,-1);
параметры на входе определяют проекционную матрицу.
Код:
void glOrtho(
GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble near,
GLdouble far
);

нужно что-то вроде

Код:
glOrtho(0, nWidth, 0, nHeight, -1, 1 );
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 20.