【问题标题】:LWJGL / OpenGL Rendering Questions (Center Render/Bending Polygons)LWJGL / OpenGL 渲染问题(中心渲染/弯曲多边形)
【发布时间】:2012-01-08 03:42:56
【问题描述】:

所以我在 LWJGL 中创建了一个简单的 3d 渲染引擎,但我遇到的问题是,当我从一个对象备份时,它会在我真正需要时向左并向上移动(朝向 0,0)它前往 screenResX/2,screenResY/2 (也许 0 我不知道)。有没有办法可以设置某种变量,让它向中心淡化?

此外,在这个引擎中,我需要弯曲多边形来渲染,就好像玩家正在看着它们一样。目前,如果您直视多边形,我只会渲染多边形,我知道这不是我们所需要的,谁能帮帮我?

提前感谢您的帮助,这是我的第一个 3d 引擎,我很无能。

【问题讨论】:

  • 我不太明白这些问题。对于第一部分,您的意思是当您通过修改其位置将相机拉回时?对于第二部分,您是指广告牌之类的东西吗?
  • @PeterT 在第一部分中,随着相机越来越远,我通过减小多边形的大小来拉回相机。
  • @PeterT 对于第二部分,我想要一些画出来的东西,就像你从不同角度观看它一样,但它仍然面向相同的方向。直视它会是一个正方形,但稍微转动它就会使它像一个矩形。

标签: java opengl 3d lwjgl


【解决方案1】:

所以对于第一个问题:缩放总是围绕原点进行。这意味着您必须将对象转换为原点,对其进行缩放,然后将其转换为目标。在这里可以更好地解释:OpenGL: scale then translate? and how?

但基本情况是这样的(来自链接的问题):

//this moves the scaled 
glTranslatef(destCenter.x, destCenter.y, 0.0);
//scale to the desired factor
glScalef(scaleX, scaleY, 0.0);
//move the center of the scaling operation into the origin
glTranslatef(sourceCenter.x * -1.0, sourceCenter.y * -1.0, 0.0);   

我仍然不太了解您的第二个问题,但我猜您的意思是您希望以透视而不是正交方式绘制某些东西。看看gluPerspective(...)glFrustum(...) 而不是glOrtho(...)

【讨论】:

  • 您可以使用-sourceCenter.x 代替sourceCenter.x * -1.0 代表X,使用-sourceCenter.y 代替sourceCenter.y * -1.0 代表Y。
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2015-01-12
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多