Articles of opengl es

如何设置Android的OpenGL ES中的一个图像的透明度?

我在Android上编写游戏,我有几个精灵。 我的目标是为特定图像设置gl.glColor4f(1f, 1f, 1f, 0.2f) ae透明度。 (我不喜欢Photoshop)。 在我的例子中,代表一个“数字”的图像向上移动,并开始透明直到消失。 但是,当我使用它时,我看到所有的精灵图像是透明的或不是我想要的。 我做错了什么? 我的代码是否正确? (我在OPenGL大三) 这里是代码的相关部分: 渲染 @Override public void onSurfaceCreated(GL10 gl, EGLConfig confid) { gl.glEnable(GL10.GL_TEXTURE_2D); gl.glShadeModel(GL10.GL_SMOOTH); //gl.glClearColor(0.5f, 0.5f, 0.5f, 0.0f); //gl.glClearColor(0,0,0,0); gl.glClearDepthf(1.0f); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); gl.glEnable(GL10.GL_BLEND); gl.glDisable(GL10.GL_DEPTH_TEST); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE); } [文字精灵图片] gl.glPushMatrix(); try { float transx = …' float transy = …; gl.glTranslatef(transx, transy, […]

渲染SkyBox的问题

目前我正在编写一个Android OpenGL ES 2.0游戏,但现在我被困在渲染一个SkyBox。 这是我的(有点简化)代码为SkyBox: float vertices [] = {-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,-1,-1,-1,1,-1,-1}; byte drawOrder[] = {1,3,0,0,3,2,4,6,5,5,6,7,0,2,4,4,2,6,5,7,1,1,7,3,5,1,4,4,1,0,6,2,7,7,2,3}; private final void bindTexture() { int shaderTextureUnit = GLES20.glGetUniformLocation(shaderProgram, "u_TextureUnit"); GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glBindTexture(GLES20.GL_TEXTURE_CUBE_MAP, texture); GLES20.glUniform1i(shaderTextureUnit, 0); } public void draw(float[] viewMatrix) // viewMatrix = Camera = data array { GLES20.glUseProgram(shaderProgram); bindTexture(); // Load Texture shaderPosition = GLES20.glGetAttribLocation(shaderProgram, "a_Position"); shaderMatrix = GLES20.glGetUniformLocation(shaderProgram, "u_Matrix"); […]

在vbo批处理绘图调用中处理顶点标记

我是OpenGL 2世界的新手,想渲染很多立方体(> 150.000)。 我怎样才能在实践中呈现这样的立方体? 我的想法是将多维数据集拆分为一组vbo(每个vbo可能有2000个多维数据集)。 我应该在一个vbo上传所有的立方体,还是可以用这种方法获得更好的性能? 一般来说,我有一个问题,如果我做一个批量绘图调用。 在devise方面,我想为我的代码添加一些结构,所以我想为我的多维数据集使用面向对象编程。 及时每个立方体是类cube.cpp一个对象。 这个类包含几何,颜色和指示等等。 我在oop中的问题是管理每个形状的顶点的标记。 有人有一个想法来管理指数?

在Android中使用VBO与OpenGL ES性能不佳

我正在制作一个Android应用程序,我需要使用OpenGL ES绘制一些多边形。 我能够渲染他们,但我对performance感到失望。 我更新了代码使用VBO,但我没有注意到任何改进。 我想渲染每秒60帧 (每帧16毫秒 )。 我有一个testing项目,我在屏幕上呈现几个三角形。 当我渲染1000个三角形时,每帧需要大约20毫秒 (取决于设备)。 我想保持10毫秒以下的渲染,因为我需要其余的( 6毫秒 )来执行其他计算(例如更新位置,检测碰撞等)。 这里是我渲染三角形的代码: public void render(int positionLocation, int colorLocation) { GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, this.bufferIndex); GLES20.glVertexAttribPointer(positionLocation, Polygon.POSITION_COMPONENT_COUNT, GLES20.GL_FLOAT, false, Polygon.STRIDE, 0); GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0); GLES20.glUniform4f(colorLocation, this.red, this.green, this.blue, this.alpha); GLES20.glDrawArrays(this.mode, 0, this.length); } https://github.com/mauriciotogneri/test/blob/master/src/com/testopengl/Polygon.java#L51-66 以下是遍历三角形的代码: private void renderTriangles() { long start = System.nanoTime(); for (int i = 0; […]

Android – kotlin – 来自JNI的init OpenGL

目前,我的OpenGL视图有这个Kotlin代码: class MySurfaceView(context: Context, attributeSet: AttributeSet) : GLSurfaceView(context, attributeSet) { companion object { internal val TAG = MySurfaceView::class.java.name } lateinit var engine: Engine init { setPreserveEGLContextOnPause(true) setEGLConfigChooser(GLConfigChooser(8, 8, 8, 0, 16, 0)) setEGLContextClientVersion(GLConfigChooser.glesVersion) setRenderer(VentuskyRenderer()) } override fun surfaceDestroyed(holder: SurfaceHolder) { super.surfaceDestroyed(holder) API.onSurfaceDestroyed() } override fun onResume() { super.onResume() } override fun onPause() { super.onPause() } […]

Android:2d滚动背景

我是游戏开发的初学者。 所有我想在一开始就实现的是一个免费的可滚动背景,就像在我的自定义graphics的策略游戏中一样。 在我的情况下,它应该是一个二维城市地图,用户可以select建筑物。 我怎样才能在android中尽可能容易实现? 用OpenGL? 你有什么特别的滚动function的例子吗?

OpenGL ES 1.1通过在iPhone上缩放来实现奇怪的缓慢绘制

我已经创建了一个视图(从UIScrollView派生),其中单元格绘制和缩放发生。 一切都是用OpenGL ES 1.1绘制的。 缩放通过增加由手指传递的计算的新距离(滑动分开或一起移动)来指定,其乘以常数系数: fNewZoom += fDistance * fCoef; fDistance在最小化时可能具有负值 有4个单元格arrays,每个arrays包含具有确定大小的单元格。 在缩放时,按照尺寸select最适合的单元格进行绘制,并使用OpenGL ES 1.1进行绘制。 所有四个纹理的初始化都在绘图视图的初始化时开始。 视图的初始化: + (Class) layerClass { return [CAEAGLLayer class]; } – (id)initWithCoder:(NSCoder*)coder { if((self = [super initWithCoder:coder])) { CAEAGLLayer *eaglLayer = (CAEAGLLayer*) self.layer; eaglLayer.opaque = NO; eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:FALSE], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; m_context = [[EAGLContext alloc] […]

graphicsAndroid游戏:在某些情况下performance不佳

我正在为Android(Java和OpenGL ES)开发一个简单的graphics游戏。 没有涉及高端graphics,基本上有less数(less于10个)精灵和一些(大约10个)dynamic绘制的基元。 游戏的performance相当不错,我的HTC Desire上可以达到50-60 FPS。 但是,有一个具体的性能问题。 在我的游戏中,我可以射击一个角色的枪,然后发射一个激光束,在其速度vector之后在屏幕上移动。 这个光束是动物画的。 事情是:当我第一次开火时,激光束移动非常不稳定(在屏幕上“跳跃”)。 但是,在第一次之后,当我再次开枪的时候,我经常喜欢,激光束在屏幕上移动得非常平滑。 我首先想到这可能是Android的垃圾收集器的问题。 但是我仔细检查了我的代码。 在主游戏循环中没有创建一个新的对象,我只使用预先创建的对象(即类实例)。 我也怀疑这个问题与我的基元(激光束)的dynamic绘制有关,因为如前所述,它的工作正常并且非常顺利。 这是我遇到这个性能问题的第一枪。 所以我的问题是,这个行为听起来对你们任何人都熟悉吗? 我非常感激任何想法。

我这样开始了我的旅程,我在正确的轨道上?

我开始从零开始学习游戏编程(我是一名软件开发人员,但不在游戏领域),我瞄准了iOS游戏开发。 目前我准备好了“O'reilly iPhone游戏开发”,然后我正在考虑阅读“Apress学习iPhone和iPad Cocos2D游戏开发”。 我在正确的轨道上? 我应该阅读和学习OpenGL ES吗? 如果是的话,什么时候开始? 游戏开发需要什么mathtypes? 代数和2D几何? 像“游戏devise师的挑战”和“游戏devise工作坊,第二版”等书也在我的名单上。 如果您知道更好的路线,我非常感激。

我可以dynamic修改3D对象吗?

我是OpenGL的新手,我能够渲染在iOS中使用.obj和.mtl文件的模型对象(人类模型)。 现在我想对已加载的模型进行修改。 例如,我想改变身高,或者改变肩宽,肚子大小等等。 这可能吗 ? 如果是这样,我该怎么办呢?