java – libgdx – 如何绘制一些像素
发布时间:2020-05-28 08:18:10 所属栏目:Java 来源:互联网
导读:我正在尝试更改像素图并渲染它,但修改后的像素不会显示在屏幕上.我不确定Pixmap是否是最好的方法.任何人都可以向我解释我的错误在下面的代码中?谢谢 package com.me.mygdxgame;import com.badlogic.gdx.ApplicationListener;import com.badlogic.gdx.Gdx;imp
|
我正在尝试更改像素图并渲染它,但修改后的像素不会显示在屏幕上.我不确定Pixmap是否是最好的方法.任何人都可以向我解释我的错误在下面的代码中?谢谢 package com.me.mygdxgame;
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.OrthographicCamera;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array;
public class MyGdxGame implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;
private Pixmap _pixmap;
private int _width;
private int _height;
private Texture _pixmapTexture;
private Sprite _pixmapSprite;
private int _x = 0;
private int _y = 0;
@Override
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera(1,h/w);
batch = new SpriteBatch();
_width = (int)Math.round(w);
_height = (int)Math.round(h);
_pixmap = new Pixmap( _width,_height,Format.RGBA8888 );
_pixmap.setColor(Color.RED);
_pixmap.fillRectangle(0,_width,_height);
_pixmapTexture = new Texture(_pixmap,Format.RGB888,false);
}
@Override
public void dispose() {
batch.dispose();
_pixmap.dispose();
_pixmapTexture.dispose();
}
@Override
public void render() {
updatePixMap();
Gdx.gl.glClearColor(1,1,1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(_pixmapTexture,-_width/2,-_height/2);
batch.end();
}
private void updatePixMap() {
_x += 1;
if (_x >= _width) {
_x = 0;
}
_y += 1;
if (_y >= _height / 2) {
return;
}
_pixmap = new Pixmap( _width,Format.RGBA8888 );
_pixmap.setColor(Color.CYAN);
_pixmap.drawPixel(_x,_y);
_pixmapTexture = new Texture(_pixmap,false);
}
@Override
public void resize(int width,int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
}
解决方法您正在为每个循环创建一个新的像素图,并且不会在视图中绘制完整的纹理.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.OrthographicCamera;
import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.MathUtils;
public class MyGdxGame implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;
private Pixmap _pixmap;
private Texture _pixmapTexture;
private int _x = 0;
private int _y = 0;
private float _w;
private float _h;
private int _width;
private int _height;
@Override
public void create() {
_w = Gdx.graphics.getWidth();
_h = Gdx.graphics.getHeight();
_width = MathUtils.round(_w);
_height = MathUtils.round(_h);
camera = new OrthographicCamera(1f,_h / _w);
camera.setToOrtho(false);
batch = new SpriteBatch();
_pixmap = new Pixmap(_width,Format.RGBA8888);
_pixmap.setColor(Color.RED);
_pixmap.fillRectangle(0,false);
}
@Override
public void dispose() {
batch.dispose();
_pixmap.dispose();
_pixmapTexture.dispose();
}
@Override
public void pause() {
}
@Override
public void render() {
updatePixMap();
Gdx.gl.glClearColor(1,1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(_pixmapTexture,1f / 2f,_h / _w / 2f);
batch.end();
}
@Override
public void resize(final int width,final int height) {
}
@Override
public void resume() {
}
private void updatePixMap() {
_x += 1;
if (_x >= _width) _x = 0;
_y += 1;
if (_y >= _height / 2) return;
_pixmap.setColor(Color.CYAN);
_pixmap.drawPixel(_x,false);
}
}
但这很慢,所以你为什么要这样做呢? (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
