首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 3D游戏开发渲染

Java 3D游戏开发渲染
EN

Stack Overflow用户
提问于 2013-09-17 10:47:06
回答 1查看 821关注 0票数 0

我看了TheCherno的游戏编程教程:

http://www.youtube.com/watch?v=RKPEQfkhbAY

在这一集中,他写了这个代码来创造3d世界。

代码语言:javascript
复制
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;
            }
        }
    }
}

我不太明白密码..。这样就能有人给我解释了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-18 07:39:01

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

但是,我将尝试解释我认为代码所做的事情(如果没有更多的信息,这并不容易):

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

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

这样做似乎是为了使生成的模式在屏幕中居中。有这两个黑段(左下角和右上角),但是你发布的代码不能解释这里做了什么。

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

xx * 128会将值提高到0、128、512和640,这将根据pixels的使用方式产生不同的结果。(如果pixels以ARGB格式表示颜色,0将为黑色,128将为深蓝色,512将为深绿色(几乎为黑色),而640也将为深蓝色和一些轻微的绿色成分。

话虽如此,我只是浏览了一下代码,并在必要时做了一些示例计算。要了解更多信息,只需遵循这条线索。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18847776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档