我正在尝试使用libgdx来理解着色器,来自XNA/HLSL背景.我试图获得一个vert/frag着色器对来重现我没有着色器得到的输出,但它没有显示任何东西.
着色器创建:
void SetupShader()
{
ShaderProgram.pedantic = false;
shader = new ShaderProgram(
Gdx.files.internal("assets/default.vert").readString(),
Gdx.files.internal("assets/default.frag").readString());
if(!shader.isCompiled()) {
Gdx.app.log("Problem loading shader:", shader.getLog());
}
batch.setShader(shader);
}
Run Code Online (Sandbox Code Playgroud)
default.vert:
attribute vec4 a_Position;
attribute vec4 a_Normal;
attribute vec2 a_TexCoord;
attribute vec4 a_Color;
uniform mat4 u_projTrans;
varying vec2 v_texCoords;
varying vec4 v_color;
void main() {
v_color = a_Color;
v_texCoords = a_TexCoord;
gl_Position = u_projTrans * a_Position;
}
Run Code Online (Sandbox Code Playgroud)
default.frag:
#ifdef GL_ES
precision mediump float;
#endif
varying vec2 v_texCoords;
varying vec4 v_color;
void main() {
gl_FragColor = v_color;
} …Run Code Online (Sandbox Code Playgroud) 我使用Libgdx框架在Java中创建了一个游戏.现在我想知道是否可以在桌面(java/.jar)游戏中使用Google Play游戏服务,还是仅仅适用于移动设备?
我的下一个项目将使用Unity 5.6.这将是一款游戏,它将利用AssetBundle进行远程场景加载.之后将逐步添加新场景.因此,我希望我不会使用太糟糕的结构,需要在项目的后期阶段进行大量更改.Unity项目是否有标准/推荐的目录结构?
我在libgdx库中使用scene2d在我的游戏中创建一些UI.
我使用了一个表格,当用户触摸按钮触摸感觉时,我想采取一些缩放操作.
当我使用像Group这样的任何其他"Actor"类型并给它一个缩放动作时,它可以工作但不是Table.
这是我的表定义:
Table table = new Table();
table.setSize(width, height);
table.setPosition(x, y);
table.setOrigin(width/2, height/2);
table.add(new Label(...));
table.row();
...
Run Code Online (Sandbox Code Playgroud)
在我的touchDown事件中,我给它一个缩放动作:
table.addAction(Actions.scaleTo(0.8f, 0.8f, 0.1f));
Run Code Online (Sandbox Code Playgroud)
在touchUp中,我给它另一个动作来获得原始比例:
table.addAction(Actions.scaleTo(1f, 1f, 0.1f));
Run Code Online (Sandbox Code Playgroud)
正如我所说,这段代码适用于其他类型的Actors,如Image和Group.任何想法,为什么不适用于表?
当我尝试在LibGDX中使用mipmap过滤时,不会出现任何图像.
我是LibGDX的新手,我有一个简单的2D场景,有三个旋转的缩放圆圈.为了对它们进行反混淆,我想使用线性过滤.对于建议,我查看了这篇文章,该文章说,对于大规模缩放的图像,可以使用mipmap来提高速度或质量.
第一个意想不到的表现是,尽管我的所有图像都按比例缩小,但我只会看到一个线性过滤器,如果magFilter是线性的.换一种说法:
此代码将显示缩小图像的线性过滤器:
parentTexture.setFilter(TextureFilter.Nearest, TextureFilter.Linear);
Run Code Online (Sandbox Code Playgroud)
这个代码不会:
parentTexture.setFilter(TextureFilter.Linear, TextureFilter.Nearest);
Run Code Online (Sandbox Code Playgroud)
这似乎与libGDX函数相反:
void com.badlogic.gdx.graphics.Texture.setFilter(TextureFilter minFilter, TextureFilter magFilter)
Run Code Online (Sandbox Code Playgroud)
这不会打扰我,除了它表明libgdx是错误的(不太可能),文章是错误的(不太可能),或者我不理解纹理过滤器.当我尝试使用mipmap过滤器时,后者似乎特别有可能.
此代码不会显示任何内容
parentTexture.setFilter(TextureFilter.MipMapLinearLinear, TextureFilter.Linear);
Run Code Online (Sandbox Code Playgroud)
此代码显示,但具有最近的过滤
parentTexture.setFilter(TextureFilter.Linear, TextureFilter.MipMapLinearLinear);
Run Code Online (Sandbox Code Playgroud)
任何解释我错的地方都将不胜感激.我在其他地方搜索过,但是libGDX中的纹理过滤器非常具体,所以除了文章之外,我还没有找到太多帮助.
当我使用这段代码时:
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
public class Main {
public static void main(String[] args) {
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = "MtxJungleGameMenu";
cfg.useGL20 = false;
cfg.width = 800;
cfg.height = 480;
new LwjglApplication(new MainStarter(), cfg);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到这样的例外:
线程"LWJGL Application"中的异常com.badlogic.gdx.utils.GdxRuntimeException:com.badlogic.gdx.utils.GdxRuntimeException:视频驱动程序不支持OpenGL.
任何帮助?
对于那些熟悉新LibGDX 0.98的人来说,这是一个问题.我不太确定,如何在Scene2d包中使用Drawable.我目前使用".png"作为各种类的背景的代码如下所示:
new TextureRegionDrawable(new TextureRegion(new Texture("data/splitpane.png")));
Run Code Online (Sandbox Code Playgroud)
有没有比这3个类更容易使用".png"作为Drawable的方法?
如果整个"游戏世界"比视口宽几千倍,并且如果我想使用scene2d来管理游戏对象作为Actors,我应该创建与全世界一样宽的Stage对象,还是应该Stage是当前的某个区域视口而不是整个世界?
换句话说,Stage宽度和高度越大,自身消耗的内存越多,即使我只在一个小视口大小的部分渲染对象?
我试图让网格法线和灯在LibGDX项目中工作.
我已经有从高度贴图纹理像素生成的纹理网格.
问题是我无法正常点亮法线.此外,我不是100%确定我在TerrainChunk类中正确设置了正常顶点.
继承主类代码:
package com.me.terrain;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
import com.badlogic.gdx.graphics.g3d.utils.CameraInputController;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
import com.badlogic.gdx.math.Matrix3;
import com.badlogic.gdx.math.Matrix4;
import com.badlogic.gdx.math.Vector3;
public class Terra extends Game {
private PerspectiveCamera camera;
private CameraInputController camController;
private TerrainChunk chunk;
private Mesh mesh;
private ShaderProgram shader;
private Texture terrainTexture;
private final Matrix3 normalMatrix = new Matrix3();
private static final float[] lightPosition = { 5, 35, 5 …Run Code Online (Sandbox Code Playgroud) 我似乎无法弄清楚如何正确旋转位图字体.我想你修改了SpriteBatch的转换矩阵.但是,尝试旋转可以围绕某个点旋转文本,我不知道如何相对于文本本身旋转文本.