GLuint fbo;
glGenFramebuffersEXT(1, &fbo);
With an error (at a string "glGenFramebuffersEXT(1, &fbo);"):
Unhandled exception at 0x00000000 in RTT.exe: 0xC0000005: Access violation reading location 0x00000000.
I use MS VS 2005.NET (VC 8.0). I've envountered similar problems when tried to create a p-buffer.
Please, tell anything that can help,
Peter.
Using Frame Buffer
Hi,
I've got a problem when trying to create subj in OpenGL.
I am trying to follow tutorial 101 on subj found on gamedev.net
But it crashes at the second string:
glGenFramebuffersEXT function address hasn't been initialized properly (hence it's NULL address). Are you using something like Glew, or are you getting the address yourself? (Since the program compiles, I assume glGenFramebuffersEXT has been defined somewhere)
~zix
~zix
I load it myself. The code is following:
And I can't figure out what's wrong here...
#include <GL/gl.h>#undef GL_GLEXT_PROTOTYPES#include <GL/glext.h>#include <GL/glut.h>#include <GL/wglext.h>#include <glh_genext.h>PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)wglGetProcAddress("glGenFramebuffersEXT");PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)wglGetProcAddress("BindFramebufferEXT");PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)wglGetProcAddress("GenRenderbuffersEXT");PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)wglGetProcAddress("BindRenderbufferEXT");PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)wglGetProcAddress("RenderbufferStorageEXT");PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)wglGetProcAddress("FramebufferRenderbufferEXT");
And I can't figure out what's wrong here...
Thanks for assistance.
Looks like I overcame this problem, using one free library. But I will appreciate if you give me some idea why my code was not working.
But I has another problem, while getting into this example. I try to run a simple app (here is the part of it with everything linked to rendering and frame buffers)
So I want to render to texture blue teapot on red background and then apply it to the quad. I checked if what I want to render into framebuffer renders fine in the screen - that's it. All other code I use from sample.
But the app shows only a black quad (obviously, nothing, because it is on the black background :)). When I disable GL_TEXTURE_2D I can see the gray quad. So the problem is in texture generating/mapping - but I can't find it.
Thanks for everything that could help,
Peter.
Looks like I overcame this problem, using one free library. But I will appreciate if you give me some idea why my code was not working.
But I has another problem, while getting into this example. I try to run a simple app (here is the part of it with everything linked to rendering and frame buffers)
void render2texture (){ glClearColor ( 1.0, 0.0, 0.0, 1.0 ); glEnable(GL_TEXTURE_2D); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); glPushAttrib(GL_VIEWPORT_BIT); glViewport(0,0,512,512); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glColor3d (1.0, 1.0, 1.0); glutSolidTeapot(1); glutSwapBuffers(); glPopAttrib(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);}void display(){ render2texture(); glClearColor ( 0.0, 0.0, 0.0, 1.0 ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); //glColor3d (1.0, 1.0, 1.0); glGenTextures(1, &img); glBindTexture(GL_TEXTURE_2D, img); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glGenerateMipmapEXT(GL_TEXTURE_2D); glColor3d (0.5, 0.5, 0.5); glBegin( GL_QUADS ); glTexCoord2f(0, 0); glVertex2f(-1, -1); glTexCoord2f(0, 1); glVertex2f(-1, 1); glTexCoord2f(1, 1); glVertex2f( 1, 1); glTexCoord2f(1, 0); glVertex2f( 1, -1); glEnd(); glutSwapBuffers();}void init(){ glEnable(GL_TEXTURE_2D); glClearColor ( 0.0, 0.0, 0.0, 1.0 ); initExtensions(); glGenFramebuffersEXT(1, &fbo); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo); GLuint depthbuffer; glGenRenderbuffersEXT(1, &depthbuffer); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer); glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, 512, 512); glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer); glGenTextures(1, &img); glBindTexture(GL_TEXTURE_2D, img); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, img, 0); GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);}void reshape(int w, int h){ glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective ( 60.0, (GLfloat)w/(GLfloat)h, 1.0, 60.0 ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt (0, 0, 10, 0, 0, 0, 0, 1, 0);}
So I want to render to texture blue teapot on red background and then apply it to the quad. I checked if what I want to render into framebuffer renders fine in the screen - that's it. All other code I use from sample.
But the app shows only a black quad (obviously, nothing, because it is on the black background :)). When I disable GL_TEXTURE_2D I can see the gray quad. So the problem is in texture generating/mapping - but I can't find it.
Thanks for everything that could help,
Peter.
Quote:Original post by stanlo
Does your framebuffer status equal GL_FRAMEBUFFER_COMPLETE ?
No. My video card is GeForce 5600 FX, so it should support this extension.
Oops, its value is GL_FRAMEBUFFER_UNSUPPORTED_EXT...
I thought that GeForce 5600 FX supports RTT via frame buffers - but where can be a problem here?
I thought that GeForce 5600 FX supports RTT via frame buffers - but where can be a problem here?
I think your extension loader isn't working because your missing the prefix 'gl', ie: you have "GenRenderbuffersEXT", and you need "glGenRenderbuffersEXT".
My source looks like
It points out if it has any troubling loading of the extensions via my logging function (Which I find handy in debugging it on other computers, as well).
Hope I could help,
~Zix
[Edited by - zix99 on March 27, 2007 2:37:20 PM]
My source looks like
PROC glGetProcAddress(LPCSTR addr){ PROC ret = wglGetProcAddress(addr); if (ret == NULL) WriteLogInfo("Unable to load OpenGL Extension %s()", addr); return ret;}void LoadGlExtensions(){...other extensions...glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)glGetProcAddress("glGenRenderbuffersEXT"); glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)glGetProcAddress("glDeleteRenderbuffersEXT"); glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)glGetProcAddress("glIsRenderbufferEXT"); glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)glGetProcAddress("glBindRenderbufferEXT"); glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)glGetProcAddress("glRenderbufferStorageEXT"); glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)glGetProcAddress("glGetRenderbufferParameterivEXT");..etc...}
It points out if it has any troubling loading of the extensions via my logging function (Which I find handy in debugging it on other computers, as well).
Hope I could help,
~Zix
[Edited by - zix99 on March 27, 2007 2:37:20 PM]
Quote:Original post by Garret
So the problem is in texture generating/mapping - but I can't find it.
Thanks for everything that could help,
Peter.
The problem is that you generate and then attach a texture in the init function and then each time you run through the display function you setup a new texture and fill it with nothing and then draw that texture on the quad.
In short; the program is doing what you asked it to.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement