gpt4 book ai didi

Java 3D游戏开发渲染

转载 作者:行者123 更新时间:2023-12-01 14:06:37 25 4
gpt4 key购买 nike

我看了TheCherno的游戏编程教程:
http://www.youtube.com/watch?v=RKPEQfkhbAY

在这一集中,他编写了这段代码来创建 3d 世界。

package game.display.graphics;

public class Render3D extends Render {

public Render3D(int width, int height) {
super(width, height);
}

public void floor() {
for(int y = 0; y < height; y++) {
double ydepth = y - height / 2;
double z = 100.0 / ydepth;

for(int x = 0; x < width; x++) {
double xdepth = x - width / 2;
xdepth *= z;
int xx = (int) (xdepth) & 5;

pixels[x+y*width] = xx * 128;
}
}
}
}

我不太明白代码..所以有人可以向我解释一下吗?

最佳答案

我仍然认为计算本身并不相关,这似乎只是一些实验(特别是考虑到视频中的屏幕)。

但是,我将尝试解释我认为代码的作用(没有更多信息,这并不那么容易):

首先,他循环遍历所有屏幕像素并计算这些像素的颜色。

  • double ydepth = y - height / 2;会导致屏幕上半部分的所有像素的深度为负
  • double xdepth = x - width / 2;会导致屏幕左半部分的深度为负

这样做似乎是为了使生成的图案在屏幕内居中。有那 2 个黑色部分(左下和右上),但是您发布的代码没有解释这里做了什么。

int xx = (int) (xdepth) & 5;将设置 xx 的值每当位 1 和位 3(5 是二进制 101)均未设置时,该值变为 0(即黑色)。因此xx只能有值 0、1、4 和 5,这会导致那些黑色条纹。

xx * 128会将值提升到 0、128、512 和 640,这将导致不同的结果,具体取决于 pixels用来。 (如果 pixels 表示 ARGB 格式的颜色,则 0 为黑色,128 为深蓝色,512 为深绿色(几乎是黑色),640 也为深蓝色,带有一些轻微的绿色成分。

话虽这么说,我只是浏览了一下代码并在必要时做了一些示例计算。欲了解更多信息,请跟随该路线。

关于Java 3D游戏开发渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847776/

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