如何在中心更改opengl的Point坐标

Posted

技术标签:

【中文标题】如何在中心更改opengl的Point坐标【英文标题】:How to change the Point coordinates of opengl in the center 【发布时间】:2016-03-11 15:12:58 【问题描述】:

我正在使用 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

【问题讨论】:

【参考方案1】:

为什么不再定义 2 个变量(如果您将这两个与您的点坐标相加,您就有了更正的坐标) 所以

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;

这样您仍然可以使用您的坐标,它们甚至可以变为负数。但是当你想要渲染、绘制(与屏幕有关的任何事情)时,你应该调用这两个函数来纠正它们的外观位置。

【讨论】:

还是一样的问题【参考方案2】:

试试这个:

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

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

【讨论】:

还是一样的问题

以上是关于如何在中心更改opengl的Point坐标的主要内容,如果未能解决你的问题,请参考以下文章

PyQtGraph & OpenGL:如何在两个坐标之间创建一个球体?

如何在 OpenGL 中更改旋转中心

如何更改/偏移Mapbox GL JS中的摄像机中心点?

如何在opengl的3d空间中旋转单个形状?

百度地图的坐标怎么添加啊?

如何在OpenGL中更改枢轴?