我正尝试将基于图块的游戏转换为3D游戏,从而直接进入我的第一个3D游戏.我正在使用libGDX的新3D类来完成此操作.

在这种情况下,我将每个图块渲染为一个盒子,将图块图中的每个块都转换为3D对象.它工作得相当好,但是当框共享一个边或角时,我收到了图形错误.

这似乎在桌面项目上更好地工作(似乎有时会发生,但不太严重):

但不是在android设备上:

此小故障取决于在块的屏幕上绘制位置.这在几种不同的android设备上会发生,但在屏幕分辨率更高的设备上会更加明显.

这是我用来在主libGDX项目中呈现的代码:

@Override

public void create() {

modelBatch = new ModelBatch();

instances = new ArrayList();

//Setup camera

cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

cam.position.set(0, 0, 150f);

cam.lookAt(0, 0,0);

cam.near = 0.1f;

cam.far = 500f;

cam.update();

//Setup Lighting

environment = new Environment();

environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));

environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));

// Add boxes

addBox(new Vector3(-50,0,0));

addBox(new Vector3(-50,16,0));

addBox(new Vector3(-50,32,0));

addBox(new Vector3(-50,48,0));

addBox(new Vector3(50,48,0));

addBox(new Vector3(66,48,0));

addBox(new Vector3(82,48,0));

addBox(new Vector3(98,48,0));

}

private void addBox(Vector3 position){

ModelBuilder modelBuilder = new ModelBuilder();

Model model = modelBuilder.createBox(16f, 16f, 16f,

new Material(ColorAttribute.createDiffuse(Color.GREEN)),

Usage.Position | Usage.Normal);

ModelInstance mis = new ModelInstance(model);

mis.transform.setTranslation(position);

instances.add(mis);

}

@Override

public void render() {

Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

// The next two lines seem to improve the problem. Problem is almost totally gone

// I tweaked the values in glPolygonOffset to make it work better

Gdx.gl20.glEnable(Gdx.gl20.GL_POLYGON_OFFSET_FILL);

Gdx.gl20.glPolygonOffset(0.1f,0.1f);

// These make it worse!

// Gdx.gl.glEnable(Gdx.gl20.GL_DEPTH_TEST);

// Gdx.gl20.glDepthFunc(Gdx.gl20.GL_LEQUAL); // GL_LESS is default

modelBatch.begin(cam);

for(ModelInstance mi : instances)

modelBatch.render(mi,environment);

modelBatch.end();

}

有任何想法吗?

编辑:

更改render()方法后,在手机上渲染(放大,减少不良边缘):

java游戏走到边缘_java-3D对象相遇的边缘和毛刺不均匀相关推荐

  1. java游戏代码潜艇大战_java游戏之潜艇大战

    java游戏之潜艇大战 java 2020-6-15 下载地址 https://www.codedown123.com/25881.html java游戏之潜艇大战 资源下载此资源下载价格为2D币,请 ...

  2. java判断是否是数组_Java判断对象类型是否为数组

    判断对象是否为数组: public static void main(String[] args) { String[] a = ["1","2"]; if(a ...

  3. java 泛型 与类反射_Java技能 —— 对象泛型以及类反射机制的应用

    一,泛型和反射的初识 Java泛型是JDK 5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型.简单的理解就是参数化类型,我们一开始就知道这个泛型T是Str ...

  4. java input是关键字吗_Java中对象的串行化(Serialization)和transient关键字 - 金色阳光...

    Java中对象的串行化(Serialization)和transient关键字: 对象的串行化(Serialization) 一.串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程 ...

  5. java游戏课程设计报告_java课程设计报告游戏_相关文章专题_写写帮文库

    时间:2019-05-14 00:00:44 作者:admin 课 程 设 计 课程名称 Java语言课程设计 题目名称 人事管理系统的设计与实现 学生学院 应用数学学院 专业班级 学 号 学生姓名 ...

  6. java 子类重定义变量_java子类对象和成员变量的隐写方法重写

    1.子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量,但是无法操作子类隐藏的成员变量(需要适用super关键字操作子类隐藏的成员变量.) publ ...

  7. Java游戏用户登录注册_Java实现多用户注册登录的幸运抽奖

    本文实例为大家分享了Java实现简单幸运抽奖的具体代码,供大家参考,具体内容如下 代码模块: User类: package test1; public class User { private Str ...

  8. java判断是否是数组_java判断对象是否是数组

    1.从构造函数入手,obj instanceof Array typeof 和 instanceof 都可以用来判断变量,typeof方法返回一个字符串,来表示数据的类型; 但是typeof来判断数据 ...

  9. java游戏超级玛丽_超级玛丽_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]

    三星 D608系列(240×320) D608 707SC 830W A717 A727 B109 B200 B250 B500 B5702C B600 B5712C C210 C3050C S350 ...

  10. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

最新文章

  1. selenium多个窗口
  2. MTK 软件设置路径
  3. php中使用json做api,JSONAPI在PHP中的应用
  4. mysql 多久备份一次_教你如何通过一次单击自动备份mysql数据库
  5. matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现
  6. 宇宙的最原始状态是个什么样子
  7. 程序员黑话,看懂的都是老司机!
  8. 福州街头大红灯笼高高挂
  9. Kakao Talk母公司第四季净利润暴跌80%
  10. python 弧度与角度互转
  11. make条件判断ifeq,ifneq,ifdef,ifndef
  12. Java程序调用OpenDDS
  13. oracle查询时使用case,Oracle查询语句中Casewhen的使用
  14. Python爬取全站妹子图片,差点硬盘走火了!
  15. acme + acme-dns + google domains 签发泛域名证书
  16. Codeforces 300D Painting Square 题解
  17. CFileDialog控件ID值
  18. The web application [] appears to have started a thread named [thread-0]
  19. python3入门指南_Python 3.4入门指南
  20. Android开发——APP门户界面设计

热门文章

  1. 计算机网络哈勃,NASA已基本确认哈勃故障原因 出在电源控制单元上
  2. MIDAS分布应用程序中的几个问题
  3. inovance变频器说明书参数设置_汇川变频器功能参数设置及实操训练
  4. 学习日记(三)利用Arduino读取加速度传感器信号并采用NRF24L01无线传输
  5. 地铁应急指挥系统解决方案
  6. 电容 电阻0201/0402/0603/等封装长宽高定义
  7. 源码:Qt开发的离线软件注册机 适用于工业设备。
  8. (最新)Win7安装配置IIS7.5详细图文教程 (一)
  9. Leader安排的三小时工作量,我如何用python十秒完成
  10. static 在C/C++中的用法总结