Я пишу 3D-игру, которая нарисована с помощью искусства ASCII, чтобы добиться особого вида. Я переношу свои модели в ModelBatch, и теперь я хотел бы преобразовать каждый пиксель в символ ASCII, прежде чем рисовать конечный результат на экране. У меня уже есть код для преобразования пикселей в ASCII, но я не знаю, как получить пиксели результата рендеринга.LibGDX - изменить пиксели после рендеринга 3D-сцены
код до сих пор (не включая ASCII конвертации):
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
import com.badlogic.gdx.graphics.g3d.materials.ColorAttribute;
import com.badlogic.gdx.graphics.g3d.materials.Material;
import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder;
public class MyGame implements ApplicationListener {
private PerspectiveCamera cam;
private ModelBatch batch;
public Model model;
public ModelInstance instance;
@Override
public void create() {
//float w = Gdx.graphics.getWidth();
//float h = Gdx.graphics.getHeight();
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(10f, 10f, 10f);
cam.lookAt(0,0,0);
cam.near = 0.1f;
cam.far = 300f;
cam.update();
batch = new ModelBatch();
ModelBuilder modelBuilder = new ModelBuilder();
model = modelBuilder.createBox(5f, 5f, 5f,
new Material(ColorAttribute.createDiffuse(Color.GREEN)),
Usage.Position | Usage.Normal);
instance = new ModelInstance(model);
}
@Override
public void dispose() {
batch.dispose();
model.dispose();
}
@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);
batch.begin(cam);
batch.render(instance);
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
Можете ли вы нарисовать изображение, а затем получить доступ к пикселям изображения? –
Это было бы идеальным решением, но как вы рисуете 3D-изображение в libGDX? Я должен, вероятно, обратить на ModelBatch, преобразовать его в изображение и затем нарисовать его с помощью SpriteBatch, но я точно не знаю, как это сделать. Я пробовал много способов, ни одна из которых не удалась. Я что-то пропустил? – Finnboy11
Я просто бросаю идеи, но должен быть способ. В конце концов, вы оказываете 2D-буфер (экран), правильно? Я не знаю, как это сделать с моей головы, но рендеринг изображения/текстуры может стать местом для начала работы с документацией и форумами libGDX. –