Java中的深度缓冲和多边形填充

Java中的深度缓冲和多边形填充,java,3d,bitmap,java-2d,depth-buffer,Java,3d,Bitmap,Java 2d,Depth Buffer,我有点好奇,是否可以用Java2D编写一个简单的引擎来渲染3D立方体。令我惊讶的是,我的尝试到目前为止还是成功的。到目前为止,立方体看起来相当不错: 但是,正如你所看到的,我严重缺乏深度测试。我完全不知道如何在Java2D中进行深度测试。根据我的发现,您可以通过将每个多边形渲染为位图,然后将每个像素与可能冲突的其他像素进行对比测试。这就是我迷路的地方 我有多边形每个顶点的必要深度值,但没有每个像素的深度值。这可能是让Java2D使用FillPolygonPolygonP方法填充每个多边形的副作

我有点好奇,是否可以用Java2D编写一个简单的引擎来渲染3D立方体。令我惊讶的是,我的尝试到目前为止还是成功的。到目前为止,立方体看起来相当不错:

但是,正如你所看到的,我严重缺乏深度测试。我完全不知道如何在Java2D中进行深度测试。根据我的发现,您可以通过将每个多边形渲染为位图,然后将每个像素与可能冲突的其他像素进行对比测试。这就是我迷路的地方

我有多边形每个顶点的必要深度值,但没有每个像素的深度值。这可能是让Java2D使用FillPolygonPolygonP方法填充每个多边形的副作用。因此,这让我相信,如果我使用fillPolygon渲染多边形,我就无法进行深度测试。。方法我的第一个问题是:我是否可以在仍然懒惰的情况下进行z缓冲,并让Java进行像素绘制


如果没有,那么我的下一个问题是:我究竟该如何自己绘制多边形?我的意思是,我很清楚如何在位图中存储像素,然后将它们渲染成图像。我想知道如何获取每个多边形的四个顶点并适当地渲染它们。

给定三角形或任何多边形,您肯定可以在任何像素位置计算z值,但我不认为您可以告诉java函数fillPolygonPolygon p仅绘制通过深度测试的多边形像素,除非您的库中有一些函数,该函数还接受模板掩码。如果没有,则需要编写自己的光栅化程序。这是一个出色但简单的光栅化算法,适用于今天的并行硬件。

给定三角形或任何多边形,您肯定可以在任何像素位置计算z值,但我不认为您可以告诉java函数fillPolygonPolygon p仅绘制通过深度测试的多边形像素,除非库中有一些函数也使用模板掩码。如果没有,则需要编写自己的光栅化程序。这一古老的算法提供了一种卓越而简单的光栅化算法,适用于今天的并行硬件。

这取决于您想了解更多信息

如果要实现Z缓冲,需要执行光栅化步骤,这一步目前由Java2D完成。渲染的扫描线算法可能是一个很好的起点。 如果您对隐藏曲面移除和消隐更感兴趣,可以从背面消隐开始
这完全取决于你想了解更多的东西

如果要实现Z缓冲,需要执行光栅化步骤,这一步目前由Java2D完成。渲染的扫描线算法可能是一个很好的起点。 如果您对隐藏曲面移除和消隐更感兴趣,可以从背面消隐开始
我想不会的。谢谢你把我链接到那篇文章。它澄清了很多关于光栅化的问题。我将尝试我的运气,然后从那里进入深度测试。谢谢我想不会的。谢谢你把我链接到那篇文章。它澄清了很多关于光栅化的问题。我将尝试我的运气,然后从那里进入深度测试。谢谢谢谢你的指点,他们帮我在谷歌上找到了正确的方向。谢谢你的指点,他们帮我在谷歌上找到了正确的方向。