Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JME3-喷涂三种以上的纹理_Java_Jmonkeyengine - Fatal编程技术网

Java JME3-喷涂三种以上的纹理

Java JME3-喷涂三种以上的纹理,java,jmonkeyengine,Java,Jmonkeyengine,以下教程介绍如何使用高度贴图执行基本纹理展开 我能够很好地学习本教程和练习。但是,我想知道如何添加三种以上的纹理。我在Terrain.j3md文件的材质参数中看到,只有三个纹理层:Tex1、Tex2、Tex3,所以我不相信您可以使用Terrain.j3md来实现这一点 我假设您必须使用TerrainLighting.j3md。但是,它的结构与NormalMap和DiffuseMap等参数非常不同,我找不到任何文档/教程来解释它们的确切含义。JME3是一个基于OpenGL的用于渲染的库。必须编写

以下教程介绍如何使用高度贴图执行基本纹理展开

我能够很好地学习本教程和练习。但是,我想知道如何添加三种以上的纹理。我在Terrain.j3md文件的材质参数中看到,只有三个纹理层:Tex1、Tex2、Tex3,所以我不相信您可以使用Terrain.j3md来实现这一点


我假设您必须使用TerrainLighting.j3md。但是,它的结构与NormalMap和DiffuseMap等参数非常不同,我找不到任何文档/教程来解释它们的确切含义。

JME3是一个基于OpenGL的用于渲染的库。必须编写自定义着色器或修改现有着色器才能执行自定义渲染

着色器是一个高级主题。您可以在SDK文档中找到对的介绍。但你可能会想读一读关于这方面的完整文章

JME3使用三个文件来管理它们:

  • 带有GLSL顶点着色器代码的
    .vert
    文件
  • 带有GLSL片段着色器代码的
    .frag
    文件
  • 带有着色器程序定义的
    .j3md
    文件
顶点着色器和片段着色器都只是使用GLSL语言的一段代码。顶点着色器对视图中的每个顶点执行一次,以计算屏幕坐标。对屏幕上的每个像素执行一次片段着色器以计算颜色。j3md文件具有关于输入参数(材质)、技术(着色器)等的定义

参数的数量和类型是固定的。但您可以修改
Terrain.j3m
以添加新的纹理参数:

Texture2D tex4
将新输入参数添加到
地形.frag

uniform sampler2D m_Tex4;

并修改片段着色器代码,以便根据需要使用该新纹理参数。

最近,发布了一个用于纹理飞溅的新材质定义,最多支持12种纹理,还可以选择添加光晕和镜面反射纹理

材质的名称是,并且是使用它的(非常好的)示例