2015-10-07 75 views
0

我想使用剪刀测试,但不幸的是剪刀以像素(int)表示,而不是在opengl世界坐标(-1.0000 1.0000)中表示。OpenGL坐标和剪刀坐标

有人可以告诉我如何将从世界坐标转换为int x y像素的方式吗?

回答

0

剪刀测试是在屏幕坐标,因为它是一个光栅操作。您可以通过将世界坐标乘以MVP矩阵(获得-1,1范围,然后将其映射到像素)来将世界坐标转换为屏幕空间,但是这不会允许您剪裁除生成的屏幕空间矩形之外的其他任何东西(这会始终轴对齐)。因此用世界空间坐标进行剪刀测试没有多大意义。

也许告诉我们你想用剪刀测试解决什么问题,我们可以找到更合适的解决方案。

+0

你好Kornel。 我想使用剪刀测试的GUI目的: 绘制一个窗口内部的东西,不会输出到屏幕的其余部分 矩形aera很适合我。 我很熟悉opengl,所以具体的代码会有很大的帮助! 我的应用程序仅在-1 +1世界坐标 谢谢 – christoph

+0

对于GUI来说,使用屏幕空间坐标会容易得多。精确的代码取决于流水线(固定/着色器)以及前者,您使用的数学库。 –

+0

那么,对于屏幕坐标,我宁愿留在opengl空间坐标,以使相同的比例和地点,但是用户屏幕size.I m使用glew.h GL/glu.h glfw glut.h glm/glm.hpp和maths_funcs .cpp这是来自一本书:[链接] http://antongerdelan.net/opengl/ – christoph