LIBGDX版NEHE OPENGL- 8. Blend & 加载模型和帖图
来源:互联网 发布:数据江湖txt精校版 编辑:程序博客网 时间:2024/04/29 12:16
初学OpenGL让我最麻烦的一件事情就是,一个正方体,要输入下面这么多顶点。
squareMesh.setVertices(new float[] {// Front face:0.5f, 1.0f, -6.0f, Color.toFloatBits(0f, 0f, 1f, 1f), // TL0.5f, -1.0f, -6.0f, Color.toFloatBits(0f, 0f, 1f, 1f), // BL2.5f, -1.0f, -6.0f, Color.toFloatBits(0f, 0f, 1f, 1f), // BR2.5f, 1.0f, -6.0f, Color.toFloatBits(0f, 0f, 1f, 1f), // TR// Top face:0.5f, 1.0f, -8.0f, Color.toFloatBits(1f, 0f, 1f, 1f), // LR0.5f, 1.0f, -6.0f, Color.toFloatBits(1f, 0f, 1f, 1f), // LN2.5f, 1.0f, -6.0f, Color.toFloatBits(1f, 0f, 1f, 1f), // RN2.5f, 1.0f, -8.0f, Color.toFloatBits(1f, 0f, 1f, 1f), // RR// Rear face2.5f, 1.0f, -8.0f, Color.toFloatBits(0f, 1f, 0f, 1f), // TR2.5f, -1.0f, -8.0f, Color.toFloatBits(0f, 1f, 0f, 1f), // BR0.5f, -1.0f, -8.0f, Color.toFloatBits(0f, 1f, 0f, 1f), // BL0.5f, 1.0f, -8.0f, Color.toFloatBits(0f, 1f, 0f, 1f), // TL// Bottom face0.5f, -1.0f, -6.0f, Color.toFloatBits(0.5f, 0.5f, 0.5f, 1f), // LN2.5f, -1.0f, -6.0f, Color.toFloatBits(0.5f, 0.5f, 0.5f, 1f), // RN2.5f, -1.0f, -8.0f, Color.toFloatBits(0.5f, 0.5f, 0.5f, 1f), // RR0.5f, -1.0f, -8.0f, Color.toFloatBits(0.5f, 0.5f, 0.5f, 1f), // LR// Left face0.5f, 1.0f, -8.0f, Color.toFloatBits(1f, 1f, 0f, 1f), // TR0.5f, 1.0f, -6.0f, Color.toFloatBits(1f, 1f, 0f, 1f), // TN0.5f, -1.0f, -6.0f, Color.toFloatBits(1f, 1f, 0f, 1f), // BN0.5f, -1.0f, -8.0f, Color.toFloatBits(1f, 1f, 0f, 1f), // BR// Right face2.5f, 1.0f, -6.0f, Color.toFloatBits(0f, 1f, 1f, 1f), // TN2.5f, 1.0f, -8.0f, Color.toFloatBits(0f, 1f, 1f, 1f), // TR2.5f, -1.0f, -8.0f, Color.toFloatBits(0f, 1f, 1f, 1f), // BR2.5f, -1.0f, -6.0f, Color.toFloatBits(0f, 1f, 1f, 1f), // BN});
今天就来说说方便的办法,连同Blend的方法一并发出来:
package com.kyugao.screen;import com.badlogic.gdx.Gdx;import com.badlogic.gdx.Input;import com.badlogic.gdx.InputProcessor;import com.badlogic.gdx.Screen;import com.badlogic.gdx.files.FileHandle;import com.badlogic.gdx.graphics.GL10;import com.badlogic.gdx.graphics.PerspectiveCamera;import com.badlogic.gdx.graphics.Texture;import com.badlogic.gdx.graphics.g3d.loaders.ModelLoaderRegistry;import com.badlogic.gdx.graphics.g3d.model.still.StillModel;public class Blend implements Screen, InputProcessor {private PerspectiveCamera camera;private Texture texture;private float rquad = 0;// indicator of light and blendprivate boolean blend;private StillModel model;@Overridepublic void render(float delta) {camera.update();camera.apply(Gdx.graphics.getGL10());Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);Gdx.gl.glEnable(GL10.GL_TEXTURE_2D);Gdx.gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE);drawGLScene();rquad += 20f * delta; // 每秒钟转20度,计算在每一次render的时间差里,要转的角度。比如0.5秒,那就应该转10度。rquad %= 360;}private boolean drawGLScene() {Gdx.gl10.glLoadIdentity();Gdx.gl10.glTranslatef(0.0f, 0.0f, -7.0f);Gdx.gl10.glRotatef(rquad, 1.0f, 1.0f, 1.0f);texture.bind();model.render();return true;}@Overridepublic void show() {FileHandle modelFile = Gdx.files.internal("g3d/cube.obj");model = ModelLoaderRegistry.loadStillModel(modelFile);texture = new Texture(Gdx.files.internal("data/textureglass.png"));Gdx.input.setInputProcessor(this);}@Overridepublic void hide() {}@Overridepublic void pause() {}@Overridepublic void resume() {}@Overridepublic void dispose() {}@Overridepublic void resize(int width, int height) {float aspectRatio = (float) width / (float) height;camera = new PerspectiveCamera(45, 2f * aspectRatio, 2f);}@Overridepublic boolean keyDown(int keycode) {if (keycode == Input.Keys.B) {System.out.println("B down");blend = !blend;if (blend) {Gdx.gl.glEnable(GL10.GL_BLEND);Gdx.gl.glDisable(GL10.GL_DEPTH_TEST);} else {Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);Gdx.gl.glDisable(GL10.GL_BLEND);}}return false;}@Overridepublic boolean keyUp(int keycode) {return false;}@Overridepublic boolean keyTyped(char character) {return false;}@Overridepublic boolean touchDown(int screenX, int screenY, int pointer, int button) {return false;}@Overridepublic boolean touchUp(int screenX, int screenY, int pointer, int button) {return false;}@Overridepublic boolean touchDragged(int screenX, int screenY, int pointer) {return false;}@Overridepublic boolean mouseMoved(int screenX, int screenY) {return false;}@Overridepublic boolean scrolled(int amount) {return false;}}
效果如下:
- LIBGDX版NEHE OPENGL- 8. Blend & 加载模型和帖图
- LIBGDX版NEHE OPENGL- 3. Adding Color
- LIBGDX版NEHE OPENGL- 4. Rotation
- LIBGDX版NEHE OPENGL- 6. Texture Mapping
- LIBGDX版NEHE OPENGL- 2. Your First Polygon
- LIBGDX版NEHE OPENGL- 5. 3D Shapes
- LIBGDX版NEHE OPENGL- 7. Texture Filters, Lighting & Keyboard Control
- OpenGL学习:模型加载-obj模型和AssImp模型
- OpenGL Blend
- NeHe OpenGL第七课:光照和键盘
- OpenGl 加载渲染模型
- opengl模型加载
- opengl加载obj模型
- OpenGL---加载obj模型
- OpenGL -- OBJ 模型加载
- OpenGL 加载模型
- OpenGL Blend 和OpenGL中alpha测试GL_ALPHA_TEST
- Nehe的OpenGL框架(MFC版)
- android中Handler与Runnable配合实现指定功能模块的定时循环地执行
- rqnoj-305
- jsp页面输出的内容被截断
- How to generate gcc debug symbol outside the build target?
- java之美之常见的几种排序算法 插入 选择 冒泡 快排 堆排
- LIBGDX版NEHE OPENGL- 8. Blend & 加载模型和帖图
- 容灾 RTO和RPO
- 构造螺旋矩阵
- maxnumber
- Android中的HttpsURLConnection连接
- hadoop运维系列笔记之FlumeNG往Hadoop写数据超时
- C/C++中的__FILE__, __LINE__,#line
- java.lang.IllegalArgument,Parse error in application web.xml file at jndi:/localhost/WEB-INF/web.xml
- C面试题精选