Android :: Emulator Bug Drawing Lines On GLSurfaceView
Aug 14, 2010
The Emulator draws line widths VERY incorrectly in OpenGL (GLSurfaceView). See http://www.flickr.com/photos/53002505@N03 for a comparison of the lines drawn correctly (in JOGL) and incorrectly in the emulator. The code also draws correctly on a real device (G1) - looks just like the JOGL screen shot. I believe this is a bug. However, I'm not an OpenGL GURU. Hence I have posted a concise version of the code to demonstrate this problem at at http://gist.github.com/523955 and http://gist.github.com/523961. I hope I am proven wrong about a bug in the emulator, and can find a way to use the emulator for what I want to do.
I am trying to put a background image and draw on top of that screen. I assumed activity will have a on draw method, but it does not have. it seems i need to use surfaceview. Can I put a surfaceview on top of the image view and make it transparent ? any example/tutorial i can refer to ?
One more video about the fancy touchscreen of the Droid X. This one has happier results! Check it out at the link below.Droid X Touchscreen Test See you later. you'll know why this post is short when you read the blog. running downstairs!
Following the samples and examples, I've successfully been able to load a model on screen and rotate it with the DPAD keys and overriding the onKeyDown method of the GLSurfaceView. Trying to use a letter though, causes a small box to appear at the bottom accepting the text that is being typed. What I'm not entirely clear on, is since I don't have a listener defined in the main Activity, why those key letter key presses are being intercepted by some other inherent listener(?). I setup an OnKeyListener for the view to call my own method and that does work... but I'm wondering if there is perhaps a better way to handle it.
I am a lazybones using GLSurfaceView and loving it. But now that my code is running too darn fast (heh), I would like to slow it down via setting eglSwapInterval to 2 or something. Just to be nice to the battery. But, being a lazybones, I can find no way of doing this when using GLSurfaceView. (and hacking an early return from onDrawFrame() was very unsatisfying).
We are developing an application that uses a GLSurfaceView to display 3D objects. We regularly get the "Application Not Responding" dialog. Inspection of the dumped threads reveals something that looks suspiciously like a deadlock. I have added the three thread dumps involved below. The first thread is the main application event thread, and it is waiting on a join with a GLThread.
The second thread is a brand new GLThread that is waiting for a semaphore lock presumably so it knows it has exclusive access to the graphics hardware. The third thread is probably a previous GLThread (the one the main thread is waiting for to finish), that is waiting to be notified. The strange thing is that the main application thread has just done a "mDone=true; notify();" prior to calling "wait()", so the third thread should have been awaken? .........................
I'm using GLSurfaceView to create a simple OpenGL drawing application. Since the elements drawn in each frame must remain on screen in order to be composed into the whole drawing, I don't use gl.glClear(GL10.GL_COLOR_BUFFER_BIT) at the beginning of each frame. But not clearing the color buffer leads to substantial flickering. Is there any way to eliminate flickering while still not clearing the screen at the beginning of each frame?
I am able to get a GLSurfaceView to have a transparent background with:
when I set the Activity's window background to transparent and the GLSurfaceView is the contentView of the Activity.
But, let's say my GLSurfaceview is parented by a ViewGroup and I want GLSurfaceView bg to be transparent to see the Viewgroup's background - I am not able to do so with the code above. Is this a limitation or am I missing something?
I have an application that uses GLSurfaceView to draw OpenGL ES graphics. This is all working (mostly) how I would expect.
Now, I would like to implement a screenshot feature. For normal views, it seems that the standard practice is to create a new Canvas with a Bitmap and then draw to that Canvas using View.onDraw(Canvas).
I've tried using SurfaceView.draw(Canvas) in a similar fashion, but it always results in a blank (black) image.
I've also tried using the drawing cache with the exact same result.
How can one use a GLSurfaceView similar to a ViewGroup, in the sense of adding Views(CustomViews) over it? Is there any means to make the GLSurfaceView be the canvas on which the view draws its contents?
I'd like to display some 3d object on top of the normal 2d ui layout screen. The 2d ui screen has background image, and GLSurfaceView is child of the content layout. I tried the same technique of the Translucent GLSurfaceView in ApiDemos sample, but GLSurfaceView clears all and shows black background. Code...
I want to create a simple Map based application in android ,where i can display my current position.Instead of overlaying a simple Image on the MapView to represent the position, i want to overlay the GLSurfaceView on the MapView. But i don't know how to achieve this. Is there any way to do that?. Please anybody knows the solution help me.
I am trying to merge two examples from the ApiDemos so one overlay over the other. 1. CameraPreview.java 2. TranslucentGLSurfaceViewActivity.java I guess GLSurfaceView is not really necessary, I saw demos that uses a GL layer as a Camera PreviewCallback, but since I am such a noob at OpenGL, I am kind of lost. Can someone points me toward the light (figuratively speaking)?
I have a GLSurfaceView with a drawable as background, however only the background is visible when rendered without surfaceView.setZOrderOnTop(true)I need to avoid using setZOrderOnTop(true) because there are static TextView's being used on top of the GLSurfaceView. Any suggestions for getting this to work?
I started an Android OpenGL application and I have the following classes: class A extends Activity class B extends GlSurfaceView implements Renderer When class A's onCreate is called, it creates an object of type class B and calls: How should I use my custom class that extends glSurfaceView in my XML file/Activity? Code...
I would like to use GLSurfaceView for my new cool application. But I am still hestitating because Android 1.1 and Android 1.0 do not have GLSurfaceView class. And another question, If I don't use GLSurfaceView, how can I use OpenGL with SurfaceView class?
I am currently porting a 3D app on Android. This app consists of a 3D view (embedded in a GLSurfaceView) and of menu screens (for settings, search , etc.).
My main activity is the one containing the GLSurfaceView. It's always the root of it's task. The problem is that my GLSurface gets destroyed whenever I launch another activity and all the GL objects (VBOs, textures) that I created in the GL context get deleted/invalidated along. So whenever my users go in the menu, the 3D scene has to be fully reloaded. Wouldn't there be a way to prevent the surface's destruction ?
what puzzle me so much is that i can't destroy a GLSurfaceView while i don't want to exit the activity. the fact is when i destroy a GLSurfaceView which had show in the screen (that means it has binded to the activity's SurfaceHolder), the activity exits without any prompting. Perhaps ,the Context which provided in the Construction of GLSurfaceView joins the two things together. so my conclusion is that a GLSurfaceView can only be destroyed when exit the activity. is there anyway to destroy a GLSurfaceView without exit activity? is there someone can provide a clue?
Having a little trouble working out how to have a context menu working in my GLSurfaceView view. There doesn't seem to be a "onCreateOptionsMenu" or "onOptionsItemSelected" to override. I do notice a "setOnCreateContextMenuListener" but I don't know how to use it.
I have an application that receives information from a database, and is used to visualize 2D bitmaps onto a GLSurfaceView. The information received will determine the x-position of the bitmap, and which bitmap image to use (there are 4 different bitmaps in my res folder to choose from).
Below are the three classes that are being used. The Activity sets the Shapes objects that need to be drawn by passing an ArrayList to the GLLayer class. This ArrayList is passed to the instance of ShapeStorage class via another setList method. This class is responsible for drawing when they are received.
The problem that I'm having is the following. Suppose I receive one object (let's say that it's a square at it's located at x=1). Some time goes by, and I receive another shape (this time, it's a triangle, and it's located at x=-1). However, when this new shape appears on the screen, the old bitmap's appearance changes to a triangle, and the new one becomes a square. In other words, the objects themselves are at the correct position that they are supposed to be at, but the bitmap being associated with them has changed. Does anyone know what the possible cause of this can be? I'm still a newbie to OpenGL-ES, and while this code looks very convoluted, it just involves setting a bunch of various properties for the View. code...
I have a SurfaceView and a GLSurfaceView inside a FrameLayout. The first SurfaceView is used for camera preview, and the GlSurfaceView is for drawing 3D objects that are supposed to be on top of the camera preview.
So natually, I compose the xml like this:
Unfortunetly, this doesn't work. 3D objects can not be seen. I found later that it only works when the order of the 2 views is reversed, which means:
The reversed ui works fine, for a while... Everything is OK when the app has a fresh start. But when I press home to go back to the desktop and then click on the icon again to resume the app, 3D objects are gone. Then I reverse the ui again, like before, no 3D objects. But when I press home and then resume the app, they appeared!
My conclusions are: The order of the 2 surface view are wrong in the fresh start, but when the app is resumed from another task, they are set back to their normal order.