我有点好奇是否可以用 Java2D 编写一个简单的引擎来渲染 3D 立方体。令我惊讶的是,到目前为止,我的尝试取得了成功。到目前为止,立方体看起来相当不错:
但是,正如你所看到的,我严重缺乏深度测试。不过,我完全不知道如何在 Java2D 中进行深度测试。根据我的发现,您可以通过将每个多边形渲染为位图,然后针对可能与之冲突的每个其他像素来测试每个像素。这就是我迷失的地方。
我有多边形每个顶点所需的深度值,但没有每个像素的深度值。这可能是让 Java2D 使用 fillPolygon(Polygon p) 方法为我填充每个多边形的副作用。所以这让我相信如果我使用 fillPolygon(..) 方法渲染多边形,我无法进行深度测试。我的第一个问题是:我可以在做 z 缓冲的同时仍然很懒并让 Java 做我的像素绘制吗?
如果没有,那么我的下一个问题是:我到底该如何自己渲染多边形?我的意思是,我非常清楚如何将像素存储在位图中,然后将它们渲染为图像。我想知道如何获取每个多边形的四个顶点并适本地渲染它们。
最佳答案
给定三角形(或任何多边形),您肯定可以计算任何像素位置的 z 值,但我认为您不能告诉 java 函数 fillPolygon(Polygon p)
仅绘制通过深度测试的多边形像素,除非您的库具有某些也需要模板掩模的函数。如果没有,您需要编写自己的光栅器。这个老paper提出了一种卓越而简单的光栅化算法,适用于当今的并行硬件。
关于java - Java中的深度缓冲和多边形填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305281/