`
daibalusu
  • 浏览: 343766 次
文章分类
社区版块
存档分类
最新评论

opengl APIdemo 学习2

 
阅读更多

看了带纹理的三角形这个demo

demo最大的和上一个最大的不一样就是:用GLES10的静态方法,而不是GL10

不同之处:

ThestaticAPIsexposemoreoftheOpenGLESfeaturesthanthe

javax.microedition.khronos.openglesAPIs,andalso

provideaprogrammingmodelthatisclosertotheCOpenGLESAPIs,which

maymakeiteasiertoreusecodeanddocumentationwrittenfortheOpenGLESAPIs.

1、设置纹理前,设置了EGL

下面这句设置了:不需要深度缓存,可提升性能

mGLView.setEGLConfigChooser(false);

2、纹理的初始化

glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);

会影响到纹理的表现,参数挺多的,不同的参数表现出来有些不一样。(换了几个参数没有区别,估计在特定形式下有大作用)

 int[] textures = new int[1];
        glGenTextures(1, textures, 0);

        mTextureID = textures[0];
        glBindTexture(GL_TEXTURE_2D, mTextureID);

        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,  GL_CLAMP_TO_EDGE);

        glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
        mTextureLoader.load(gl);

 private class RobotTextureLoader implements TextureLoader {
        public void load(GL10 gl) {
            InputStream is = mContext.getResources().openRawResource(
                    R.raw.robot);
            Bitmap bitmap;
            try {
                bitmap = BitmapFactory.decodeStream(is);
            } finally {
                try {
                    is.close();
                } catch (IOException e) {
                    // Ignore.
                }
            }

            GLUtils.texImage2D(GL_TEXTURE_2D, 0, bitmap, 0);
            bitmap.recycle();
        }
    }

3、在onDrawFrame中绘制

voidglActiveTexture(GLenumtexUnit);
功能:选择一个纹理单元,接下来的纹理函数将修改该纹理单元.

中间还有一些对该纹理的设置,没有写出,activie可翻译出激活的意思,即对这个纹理已经设置号的参数再修改下

glActiveTexture(GL_TEXTURE0);
        glBindTexture(GL_TEXTURE_2D, mTextureID);
        mTriangle.draw(gl);


4、三角形类

没啥好说的,定义好顶点坐标、纹理坐标,再写个draw方法就行了。

值得注意的是:

api中这个三角形的纹理坐标较大,超过的范围根据其设定的参数进行了重复



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics