I get it. I forget this lines.
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_LINEAR);

Thanks again. It works fine now. It only takes 15-20ms to draw one
frame. lol.

On 12月13日, 下午12时04分, Eong <eong.c...@gmail.com> wrote:
> Thanks!
> You are right, the GL_INVALID_VALUE error is caused by the dimensions.
> Now the glTexImage2D seems to be okay. But it only gives me a white
> screen on my phone.(It works on the emulator)
> Any idea?
>
> On 12月13日, 上午9时57分, Jack Palevich <jack.palev...@gmail.com> wrote:
>
> > My guess is that your problem is that you are trying to create a non-
> > power-of-two sized texture, which is not supported on the G1. Try
> > using 512 x 512 as your texture dimensions. You can continue to use
> > 480 x 320 for glDrawTexOES.
>
> > Here's how you can debug problems like this by yourself in the future:
>
> > First, convert the error code to its symbolic value:
>
> > 1281 is GL_INVALID_VALUE
>
> > Then, read the OpenGL ES docs for the function that failed. Look at
> > the "ERRORS" section. Check each of the possible reasons for the error
> > code that you received.
>
> > In this case you'll see that for glTexImage2D, you will see that
> > GL_INVALID_VALUE is generated for these reasons:
>
> > If width or height is less than 0 or greater than 2 +
> > GL_MAX_TEXTURE_SIZE.
>
> > If level is less than 0.
>
> > If level is greater than log 2 ⁡ max , where max is the returned value
> > of GL_MAX_TEXTURE_SIZE.
>
> > If internalFormat is not 1, 2, 3, 4, or one of the accepted resolution
> > and format symbolic constants.
>
> > If non-power-of-two textures are not supported and the width or height
> > cannot be represented as 2 k + 2 ⁡ border for some integer value of k.
>
> > If border is not 0 or 1.
>
> > On Dec 13, 1:14 am, Eong <eong.c...@gmail.com> wrote:
>
> > > I used a ndk library to decode the frames and update the ShortBuffer
> > > with RGB565 format.
> > > I allocate the buffer in the activity like below.
>
> > > ShortBuffer m_byteCanvas = ShortBuffer.allocate(m_width * m_height);
> > > .......
> > > And I use GLSurfaceView and set the renderer for it.
>
> > > mGLSurfaceView = new GLSurfaceView(this);
> > >                 
> > > mGLSurfaceView.setDebugFlags(GLSurfaceView.DEBUG_LOG_GL_CALLS);
> > >                 mGLSurfaceView.setRenderer(new GRenderer());
> > >                 setContentView(mGLSurfaceView);
>
> > > In the GRenderer class, I just need to update the ShortBuffer to
> > > screen.
> > > .....
> > > gl.glBindTexture(GL10.GL_TEXTURE_2D, tex);
> > > gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGB, m_width, m_height,
> > > 0, GL10.GL_RGB, GL10.GL_UNSIGNED_SHORT_5_6_5, m_byteCanvas);
> > >                         l_gl.glTexParameteriv(GL10.GL_TEXTURE_2D,
> > >                     GL11Ext.GL_TEXTURE_CROP_RECT_OES,
> > >                     new int[] {0, 0, 480, 320}, 0);
>
> > > public void onDrawFrame(GL10 gl) {
> > > gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGB, m_width, m_height,
> > > 0, GL10.GL_RGB, GL10.GL_UNSIGNED_SHORT_5_6_5, m_byteCanvas);
> > > ((GL11Ext)gl).glDrawTexiOES(0, 0, 0, 480, 320);
>
> > > }
>
> > > This works fine on the emulator (1.5 and 1.6), but when I tested it on
> > > my G2 and G1, it gave me glError 1281 on glTexImage2D. If anybody can
> > > help with this?
>
> > > PS:
> > > I tried Canvas and the performance is not good enough, it takes more
> > > than 30ms to draw a frame.(480x320).

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to