纹理渲染无效
Invalid rendering of texture
我有一个模型,我用 AssetManager
加载然后渲染它。这是一个g3dj
文件,具有png 纹理。所有文件都存在于文件系统中。
就我而言,我从服务器加载模型并将其添加到游戏中。 The texture
存在但未正确呈现。
当我在 ApplicationListener
中的 create()
方法之后添加它时,ModelBatch 使我的模型完全变黑。如果我在 create() 方法中添加模型,它会正确呈现。
有什么问题?我已经尝试重新创建 RenderContext
.
一些代码:
@Override
public void create() {
//setup camera, environment, create ModelBatch instance
assetManager = new AssetManager();
assetManager.load("models/f_base.g3dj", Model.class);
assetManager.finishLoading();
Model model = assetManager.get("models/f_base.g3dj");
modelInstance = new ModelInstance(model);
}
@Override
public void render() {
if (assetManager.update()) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
cameraController.update();
batch.begin(camera);
batch.render(modelInstance);
batch.end();
}
}
终于找到解决办法了。问题是 AssetManager 会抛出异常消息:"call to OpenGL ES API with no current context (logged once per thread)" 如果您强制加载 AssetManager 资源:
assetManager.finishLoading();
要使 AssetManager 异步加载资源,您只需将资源添加到队列:
assetManager.load(fileHandle.path(), Model.class);
然后检查您是否可以使用 update() 方法渲染您的模型:
public void render() {
if (assetManager.update()) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
cameraController.update();
batch.begin(camera);
//model loaded. you can render it.
batch.end();
}
}
我有一个模型,我用 AssetManager
加载然后渲染它。这是一个g3dj
文件,具有png 纹理。所有文件都存在于文件系统中。
就我而言,我从服务器加载模型并将其添加到游戏中。 The texture
存在但未正确呈现。
当我在 ApplicationListener
中的 create()
方法之后添加它时,ModelBatch 使我的模型完全变黑。如果我在 create() 方法中添加模型,它会正确呈现。
有什么问题?我已经尝试重新创建 RenderContext
.
一些代码:
@Override
public void create() {
//setup camera, environment, create ModelBatch instance
assetManager = new AssetManager();
assetManager.load("models/f_base.g3dj", Model.class);
assetManager.finishLoading();
Model model = assetManager.get("models/f_base.g3dj");
modelInstance = new ModelInstance(model);
}
@Override
public void render() {
if (assetManager.update()) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
cameraController.update();
batch.begin(camera);
batch.render(modelInstance);
batch.end();
}
}
终于找到解决办法了。问题是 AssetManager 会抛出异常消息:"call to OpenGL ES API with no current context (logged once per thread)" 如果您强制加载 AssetManager 资源:
assetManager.finishLoading();
要使 AssetManager 异步加载资源,您只需将资源添加到队列:
assetManager.load(fileHandle.path(), Model.class);
然后检查您是否可以使用 update() 方法渲染您的模型:
public void render() {
if (assetManager.update()) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
cameraController.update();
batch.begin(camera);
//model loaded. you can render it.
batch.end();
}
}