• 9
• 10
• 9
• 10
• 10
• Similar Content

• Good evening everyone!

I was wondering if there is something equivalent of  GL_NV_blend_equation_advanced for AMD?
Basically I'm trying to find more compatible version of it.

Thank you!

• Hello guys,

How do I know? Why does wavefront not show for me?
I already checked I have non errors yet.

And my download (mega.nz) should it is original but I tried no success...
- Add blend source and png file here I have tried tried,.....

PS: Why is our community not active? I wait very longer. Stop to lie me!
Thanks !

• I wasn't sure if this would be the right place for a topic like this so sorry if it isn't.
I'm currently working on a project for Uni using FreeGLUT to make a simple solar system simulation. I've got to the point where I've implemented all the planets and have used a Scene Graph to link them all together. The issue I'm having with now though is basically the planets and moons orbit correctly at their own orbit speeds.
I'm not really experienced with using matrices for stuff like this so It's likely why I can't figure out how exactly to get it working. This is where I'm applying the transformation matrices, as well as pushing and popping them. This is within the Render function that every planet including the sun and moons will have and run.
if (tag != "Sun") { glRotatef(orbitAngle, orbitRotation.X, orbitRotation.Y, orbitRotation.Z); } glPushMatrix(); glTranslatef(position.X, position.Y, position.Z); glRotatef(rotationAngle, rotation.X, rotation.Y, rotation.Z); glScalef(scale.X, scale.Y, scale.Z); glDrawElements(GL_TRIANGLES, mesh->indiceCount, GL_UNSIGNED_SHORT, mesh->indices); if (tag != "Sun") { glPopMatrix(); } The "If(tag != "Sun")" parts are my attempts are getting the planets to orbit correctly though it likely isn't the way I'm meant to be doing it. So I was wondering if someone would be able to help me? As I really don't have an idea on what I would do to get it working. Using the if statement is truthfully the closest I've got to it working but there are still weird effects like the planets orbiting faster then they should depending on the number of planets actually be updated/rendered.

• Hello everyone,
I have problem with texture

• Hello everyone
For @80bserver8 nice job - I have found Google search. How did you port from Javascript WebGL to C# OpenTK.?
I have been searched Google but it shows f***ing Unity 3D. I really want know how do I understand I want start with OpenTK But I want know where is porting of Javascript and C#?

Thanks!

OpenGL Crash in glGenFramebuffersEXT for some users

This topic is 2076 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Our game Awesomenauts released last week for Windows and for a small number of users the game turns out to crash when post-effects are enabled. It works fine without. All of these users have Nvidia videocards, but from various generations: from 8800 to 560. Most users with the exact same videocards don't get these crashes. I asked those with crashes to update their drivers, and that does not help.

Now the interesting thing is that creating the first rendertexture does not crash, and the second rendertexture the game creates, crashes. It crashes in glGenFramebuffersEXT (or maybe glGenTextures, not entirely sure, but I think it is glGenFramebuffersEXT). These rendertextures are created directly after each other, with no relevant code in-between. So it basically looks like this (removed some irrelevant code in-between):

 { unsigned int frameBufferID; unsigned int textureID; glGenFramebuffersEXT(1, &frameBufferID); glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_2D, textureID); GLint filterMode = GL_LINEAR; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filterMode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filterMode); GLint frameBufferFormat = GL_RGBA; glTexImage2D(GL_TEXTURE_2D, 0, frameBufferFormat, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, frameBufferID); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, textureID, 0); } { unsigned int frameBufferID; unsigned int textureID; glGenFramebuffersEXT(1, &frameBufferID); // << CRASH! glGenTextures(1, &textureID); // << OR MAYBE THE CRASH IS HERE glBindTexture(GL_TEXTURE_2D, textureID); GLint filterMode = GL_LINEAR; glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filterMode); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filterMode); GLint frameBufferFormat = GL_RGBA; glTexImage2D(GL_TEXTURE_2D, 0, frameBufferFormat, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, frameBufferID); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, textureID, 0); }

Some random pieces of information:
-Crashes are on Windows
-Crashes only happen on Nvidia videocards
-Happens for less than 1% of our users (which is quite a few computers for a game that is selling well on Steam)
-We use SDL 1.2.13
-Our engine is multi-threaded, and all OpenGL code happens in one thread

What could cause this to crash on only some rare computers, and what can I do to fix this?

Share on other sites

I asked those with crashes to update their drivers, and that does not help.

Try to get a dxdiag report and take a look at the driver version yourself.

Else your code looks ok to me. Maybe it is just a result of an previous error. I would add a lot of error checking code at the suspecious location and send the pimped exe to one of the players with this problem to track it down.

Share on other sites

Try to get a dxdiag report and take a look at the driver version yourself.

GL_VENDOR: NVIDIA Corporation
GL_RENDERER GeForce 9800 GT/PCIe/SSE2
GL_VERSION 3.3.0
What other information would be interesting to check in the dxdiag report?

Else your code looks ok to me. Maybe it is just a result of an previous error. I would add a lot of error checking code at the suspecious location and send the pimped exe to one of the players with this problem to track it down.[/quote]
I call glGetError() and cgGetError() regularly already, and they don't print anything at all. I added logging to find the exact line where the crash happens. What other things could I log that are interesting?

Share on other sites

GL_VERSION 3.3.0

This is the supported gl version, but not the driver version. Current driver version for nvidia should be above 300. Early driver version, which supported ogl 3.3.0, might be buggier than later one which still support the same ogl version.

I call glGetError() and cgGetError() regularly already,

Btw. this kills performance (at least decrease it due to flushing the command queue). Nevertheless, there are special error checking functions avaible for the framebuffer (glCheckFramebufferStatusEXT), try to check these one after creating the first framebuffer.

Share on other sites
I'd suggest using the core (i.e non-EXT) version of the FBO API where it's available, which it should be on all 3.3 hardware. A best guess here is that you're using some other functionality which doesn't interact well with the -EXT version on these cards.

Share on other sites
I tried using the non-EXT versions, but it still crashes.

Strangely, I still had to call them EXT, is that correct? For some reason I can request glGenFramebuffers and it works fine, but I can only put it in a PFNGLGENFRAMEBUFFERSEXTPROC pointer. It seems like PFNGLGENFRAMEBUFFERSPROC does not exist?! Here's how I get the functions related to the framebuffer:

PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffers = PFNGLGENFRAMEBUFFERSEXTPROC(wglGetProcAddress("glGenFramebuffers")); if (glGenFramebuffers == NULL) { glGenFramebuffers = PFNGLGENFRAMEBUFFERSEXTPROC(wglGetProcAddress("glGenFramebuffersEXT")); }

I also had to still use GL_FRAMEBUFFER_EXT instead of GL_FRAMEBUFFER. Is that okay, or am I doing something wrong?

So using glGenFramebuffers instead of glGenFramebuffersEXT does work on my own computer and behaves the exact same as just using the EXT versions, but on the computers where it used to crash, it still crashes. Edited by Oogst

Share on other sites
Have you considered using an extension wrangler (like GLEW) instead of doing that yourself? Right now it is not clear if the problem happens because you are setting up the extensions wrong or because something with OpenGL does not work as intended.

Share on other sites
I second the notion of using GLEW, instead of retrieving the function addresses yourself.
Also note that the name of your function variable is just that, a variable name. Changing it will not change the behaviour of your program. The call to wglGetProcAddress("glGenFramebuffersEXT") determines whether you retrieving the EXT version of the function or not. I am not sure whether there is actually any difference between the two since glGenFramebuffers moved to the Core profile though.

Share on other sites
I didn't know about GLEW before it was brought up in this topic, and I really don't want to switch these kinds of libraries on an already released game with tens of thousands of users: the risk is just too big...

What could I be doing wrong in retrieving these functions that GLEW would fix? I think my own code is exactly as the standard advocates, or am I overlooking something here?

Anyway, since it works for 99% of users, I don't think the way the extensions are retrieved would be the problem, right? Is it not more probably something with the use of rendertextures itself?