如何更改中心opengl的Point坐标

时间:2016-03-11 15:12:58

标签: c++ qt opengl

我正在使用QT,我将使用OPENGL设计一个点(0,0)。 问题是:不在中间点:

http://i.stack.imgur.com/diB33.png

我的代码:

标题:

#ifndef BRM_H
#define BRM_H

#include <QGLWidget>

#include<qwidget.h>
class brm : public QGLWidget
{
    Q_OBJECT

public:
    int x , y ;
    explicit brm(QWidget *parent = 0);

    void initializeGL();
    void paintGL();
    void resize(int a ,int b);


};

#endif // BRM_H

班级:

#include<brm.h>
#include<qgl.h>
#include <GL/glut.h>
#include <GL/glu.h>
brm::brm(QWidget *parent )
    : QGLWidget( parent)
{


}




void
brm::initializeGL(){
    glClearColor(0,0,0,1);
}

void brm::paintGL(){



    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);



    glBegin(GL_POINTS);
        glVertex2f(0.0, 0.0);
    glEnd();
}

void brm::resize(int a , int b){

}

我会改变这一点,中间是这样的: http://i.stack.imgur.com/WRC2e.png

2 个答案:

答案 0 :(得分:0)

为什么不定义另外两个变量(如果你用你的点坐标添加这两个变量,你有更正的坐标) 所以

const int MIDLLE_X = 1280 / 2; //or whatever your width divided by 2 is
const int MIDDLE_Y = 720 / 2; //or whatever your height divided by 2 is

(如果可能的话,让它们全球化)

so(MIDDLE_X,MIDDLE_Y)作为坐标位于中心

比你能做2功能

int centerizeX(int x) { // wants the X coordinate
       return x + MIDDLE_X;
}

int centerizeY(int y) { // wants the Y coordinate
       return y += MIDDLE_X;
}

你仍然可以使用你的坐标,它们甚至可以消极。但是当你想要渲染,绘制(无论与屏幕有什么关系)时,你应该调用这两个函数,以便更正它们的上升位置。

答案 1 :(得分:0)

试试这个:

void brm::resize(int a , int b){
    glViewport(-a/2, -b/2, a, b);
}

之后,[0,0]位置应始终位于小部件的中心。