IllegalStateException: Incomplete Draw Buffer

Hey all,



I’m having all sorts of issues with JME3 that I’m starting to believe is a sign that my graphics card is not fully up to the job. I know it’s a terrible card (ATI Mobility Radeon HD 4570), but I was hoping it would be just about ok.



The problem I am having is that I receive the following error when trying to run certain applications (such as the TestNiftyToMesh JME test, and sadly Mythruna). I have spoken to Paul from Mythruna to try and solve this problem, but it’s looking more and more like it’s either my card or a bug in JME (probably the former :P)



Stacktrace:

2011-08-04 01:30:04,446 ERROR [mythruna.MainStart] Unhandled error:Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.IllegalStateException: Incomplete draw buffer.
at com.jme3.renderer.lwjgl.LwjglRenderer.checkFrameBufferError(LwjglRenderer.java:1275)
at com.jme3.renderer.lwjgl.LwjglRenderer.setFrameBuffer(LwjglRenderer.java:1523)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1103)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1164)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:264)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:144)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:185)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:218)
at java.lang.Thread.run(Unknown Source)
2011-08-04 01:30:04,449 ERROR [mythruna.MainStart] Default handling did not exit.


Please tell me there is some simple fix I can make to solve this issue!
Gaz

Sorry for the double-post, but I should also point out that I get the following SEVERE notice before the exception when running the mentioned test:


05-Aug-2011 10:00:38 com.jme3.renderer.lwjgl.LwjglRenderer setFrameBuffer
SEVERE: Problem FBO:
FrameBuffer[format=1024x768x1, drawBuf=0]
Depth => BufferTarget[format=Depth]
Color(0) => TextureTarget[format=RGB8]

You might want to post the log or at least portions of it that you got when you ran the nifty test… since that will have the graphics card info in it. Someone smarter than I am can then tell you if it’s even possible to have it work. :slight_smile:

Good idea, here’s a cut-down version of the log. Hope this helps.


05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay run
INFO: Using LWJGL 2.7.1
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglDisplay createContext
INFO: Selected display mode: 800 x 600 x 0 @0Hz
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Display created.
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Adapter: igdumd64
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Driver Version: 8.15.10.1892
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Vendor: Intel
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: OpenGL Version: 2.1.0 - Build 8.15.10.1892
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: Renderer: Mobile Intel(R) 4 Series Express Chipset Family
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglAbstractDisplay initInThread
INFO: GLSL Ver: 1.20 - Intel Build 8.15.10.1892
05-Aug-2011 10:10:13 com.jme3.system.lwjgl.LwjglTimer
INFO: Timer resolution: 1000 ticks per second
05-Aug-2011 10:10:13 com.jme3.renderer.lwjgl.LwjglRenderer initialize
INFO: Caps: [FrameBuffer, FrameBufferMRT, OpenGL20, OpenGL21, ARBprogram, GLSL100, GLSL110, GLSL120, VertexTextureFetch, FloatTexture, FloatColorBuffer]

....

05-Aug-2011 10:10:15 com.jme3.renderer.lwjgl.LwjglRenderer setFrameBuffer
SEVERE: Problem FBO:
FrameBuffer[format=1024x768x1, drawBuf=0]
Depth => BufferTarget[format=Depth]
Color(0) => TextureTarget[format=RGB8]

05-Aug-2011 10:10:15 com.jme3.app.Application handleError
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,6,main]
java.lang.IllegalStateException: Incomplete draw buffer.
at com.jme3.renderer.lwjgl.LwjglRenderer.checkFrameBufferError(LwjglRenderer.java:1135)
at com.jme3.renderer.lwjgl.LwjglRenderer.setFrameBuffer(LwjglRenderer.java:1381)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:701)
at com.jme3.renderer.RenderManager.render(RenderManager.java:739)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:249)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:158)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:203)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:221)
at java.lang.Thread.run(Thread.java:662)

This was my first thought, but wikipedia would suggest otherwise (http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units#OpenGL_version_note).

It seems to suggest that NPOT texture support came in in OpenGL2.0, whereas JME states that my card can use v2.1. Saying that it does seem that you are probably right.



In fact even stranger is that wikipedia suggests that the card can use up to v3.3. (http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units#Mobility_Radeon_HD_4xxx_Series - Radeon HD 4570)

Maybe your card does not support non power of 2 textures for frame buffers.

Are your drivers up to date?



@Paul, I guess this FBO is used for filters, maybe you should add a way to disable filters in mythruna. There might be a way to check NPOT capability.

Actually I use a Radeon 3800 Hd, and everything works, If I’m not mistaken your card is one generation newer? Uptodate drivers? Also yes, the Radeon crads can use some opengl3 features already.

nehon said:
Maybe your card does not support non power of 2 textures for frame buffers.
Are your drivers up to date?

@Paul, I guess this FBO is used for filters, maybe you should add a way to disable filters in mythruna. There might be a way to check NPOT capability.


Except it fails before it even opens the first nifty screen. It's possible it's the post processors... but without post processing water doesn't work and lighting looks dumb.

erf…



well @gb056 update your drivers :stuck_out_tongue:

I was going to have him try the regular nifty example but apparently we don’t have that anymore. Just the “colors quads and text” and the render to a bitmap… the second of which fails. Since we no longer seem to have a nifty test that has actual bitmapped screens, etc… then it’s hard to confirm in my current architecture. A while back I moved the setup of the post processors back to simpleInit trying to work around some other issues someone was having.



So it could be the post processors… but I’m disinclined to remove them.

Just to be on the safe side, test your openGL extensions with this little program found here.



Check if everything looks right then run the tests and see how that goes. If those tests run fine, no errors etc, then we can surmise that the problem is either the post-processing or jME.

Interesting…Drivers are up to date, but the when I run the tests that @madjack mentioned I get the following error:


System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at openglex.Win32.oevRunRenderingTests(String szRequest)
at openglex.oevMain.OnRenderingTest(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Looks like it's a problem my end then chaps. How odd.

Any problem with openGL games? Noticed anything weird when rendering? Overheating? Sudden crashes?



It is possible you have some bad hardware, some flawed memory chip… Maybe you could RMA it.

Nothing apart from just plain not being able to play some due to FPS lag, but that is to be expected with an integrated card of this nature. It’s not a massive issue as of yet, just means I miss out on Mythruna :P, and can’t add anything too fancy to my game, at least not from this box.



Cheers for all the help guys

We do have the regular nifty gui example, its now called TestNiftyExamples

Sorry, the original poster said it wasn’t there in a previous conversation and I thought it had been removed. I remember some discussion about new examples coming or something. I didn’t check. :stuck_out_tongue:



@gb056, please try TestNiftyExamples and see if it runs.

I can’t seem to find it in my version…odd because I can see it if I look at the google code (I’m using the version that came with JMP as far as I can remember, it was a week or so ago). Anyway I’ve downloaded the .java for it as a quick fix, but can’t find the “all/intro.xml” file it uses anywhere (including the code repo). Can somebody point me in the right direction/post it here??



I will get round to updating to the very latest version of JME soon, however I figured I can’t have that old a build as I only heard about the engine last week.

The all/intro.xml is in one of the nifty example jars. I haven’t updated in a while so maybe that’s all broken at the moment. Someone else will have to answer.

It works okay. And yes, that file is in the examples jar and it should work if you run with the nightly build

Ok after some fiddling I found the file and got the example test running. It gets to the main menu and on selecting the first option errors out as it’s missing “aurulent-sans-17.png.”



I found that on the internet and got it running again, but this time it can’t find " aurulent-sans-17.png (Flipped)" grr :P.



I need to be up early tomorrow and it’s 11:30pm here so will try again in the morning. Tests run smoothly up until there however.