如何在中心更改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坐标的主要内容,如果未能解决你的问题,请参考以下文章