如何在opengl中绘制一小部分屏幕大小的正方形网格?

时间:2013-12-30 12:45:02

标签: c++ opengl sdl

我有整个屏幕(我最终可能会使区域小于窗口大小,可能显示分数和其他相关统计数据?我可能远非那个点)。 我想绘制一个正方形网格。

这些方块的大小应该是屏幕大小的一定比例,例如。 1 / 2,1 / 3,1 / 9等

我传递一个从2开始的int,这将帮助我得到一个2x2网格的彩色方块。在满足某些条件后,此int将增加1,并且我将以3x3,4x4等网格结束(你不应该担心任何实际的'游戏逻辑',我会试着弄明白自己:P)

我发现令人困惑的是,opengl使用的整个-1.0到+1.0坐标(我希望我没有完全错误的XD)。我有SDL的基本知识,所以我习惯使用0到'屏幕高度/宽度'坐标。但是,我不认为SDL的图形适合我想要尝试的东西,所以我试图将opengl与SDL一起使用。

我怎样才能找出这些方块的坐标和尺寸,并实际绘制它们?

(我不打算发布任何代码,因为我怀疑到目前为止我会有什么帮助,但这是在一个完成所有绘图的单个函数中)

额外:如果你们中的任何人知道如何将看起来像(x = 32,y = 128)的坐标转换成opengl的花车,这可能会让我的生活变得更轻松,我可以弄清楚我自己的坐标,尺寸和绘图。 (是的,我知道无论窗口大小如何,opengl都会从-1.0变为+1.0,所以这样的东西不会缩放,但我完全没问题)

1 个答案:

答案 0 :(得分:1)

您可以使用glOrtho(0,width,height,0,0,1)功能设置所需的尺寸。

void WINAPI glOrtho(
  GLdouble left,  //Left of the screen, commonly chosen as the start and set to 0
  GLdouble right, //The value for the right of the screen
  GLdouble bottom, //Same logic as above
  GLdouble top,
  GLdouble zNear,
  GLdouble zFar
);

因此,如果您希望屏幕尺寸为800宽,以左侧为起点,高400且顶部为起点:

glOrtho(0, 800, 400, 0, 0, 1)

http://msdn.microsoft.com/en-us/library/windows/desktop/dd373965%28v=vs.85%29.aspx