gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:14:50 25 4
gpt4 key购买 nike

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

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

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

如果没有,那么我的下一个问题是:我究竟该如何自行渲染多边形?我的意思是,我非常了解如何在位图中存储像素然后将它们渲染为图像。我想知道如何获取每个多边形的四个顶点并适本地渲染它们。

最佳答案

给定三角形(或任何多边形),您肯定可以计算任何像素位置的 z 值,但我不认为您可以告诉 java 函数 fillPolygon(Polygon p) 只绘制通过深度测试的多边形像素,除非你的库有一些也需要模板掩码的函数。如果没有,您需要编写自己的光栅器代码。这个老paper提出了一种卓越而简单的光栅化算法,适用于当今的并行硬件。

关于java - Java中的深度缓冲和多边形填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18305281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com