我在Java中使用 OpenGL wigh LWJGL ,但这并不重要。我不是要求代码,而是要求提示如何执行此操作。语言无关。
我有一些区域(简单的矩形),而且,比方说,我想在这个区域展示一个大的平铺地图。该区域不是整个屏幕,我想渲染它周围的东西。
我知道很少的方法,但所有这些都是巨大的痛苦或不适合。
指导我。
答案 0 :(得分:2)
当您的区域保证是轴对齐的矩形时,您可以使用glViewport
和/或glScissor
(后者与glEnable(GL_SCISSOR_TEST)
一起使用)以防止OpenGL在外部呈现那个矩形。
如果要修改视口,则会缩放刚刚生成的图像以适合视口矩形。使用剪刀测试,该区域只是“剪切”#34;因此不会相对于视口设置进行缩放。但差异实际上并不重要 - 你可以通过两条路径得到相同的结果,只需相应地调整你的转换。请注意,如果您需要在渲染"平铺地图时调用glClear
,清除操作将不受当前设置视口的限制,但剪刀测试将允许您均匀限制清算。
如果您的区域不能被描述为轴对齐的矩形,我建议您查看模板缓冲区。算法很简单:
步骤1和2只需要完成一次(只要您的区域没有变化,或者你的风大小)。有关如何执行此操作的详细信息,请查看glStencilFunc
和glStencilOp
函数。