初学opengl程序,有以下程序,编译通过,但是一运行就中断,
设置断点以后发现,Encode2RGBA后的pImage_RGBA和读取纹理后,用来存放输出的oImage都没有相应的改变代码如下:
CxImage image;
image.Destroy();
image.Load(_T("image.bmp"),0); unsigned char *pImage_RGBA=NULL,*oImage=NULL; if(!image.IsValid())
return 0; int sizeX,sizeY;
sizeX=image.GetWidth();
sizeY=image.GetHeight(); long imagesize_RGB=sizeX*sizeY*3; oImage=pImage_RGBA=new unsigned char[imagesize_RGB]; image.Encode2RGBA(pImage_RGBA,imagesize_RGB); glutInit(&argc,argv);
glutCreateWindow("a");
glewInit();
GLuint fb;
glGenFramebuffersEXT(1,&fb);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fb);
GLuint tex;
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D,tex); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D,tex,0);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,image.GetWidth(),image.GetHeight(),0,GL_RGBA,GL_BITMAP,pImage_RGBA);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadPixels(0,0,image.GetWidth(),image.GetHeight(),GL_RGBA,GL_BITMAP,oImage);
CxImage imageout;
imageout.Create(sizeX,sizeY,pImage_RGBA,0);
imageout.CreateFromArray(oImage,sizeX,sizeY,24,imagesize_RGB,false);
imageout.Save(_T("imageout.bmp"),0);
image.FreeMemory(pImage_RGBA);
glDeleteFramebuffersEXT(1,&fb);
glDeleteTextures(1,&tex);
return 0;求高手指点!
设置断点以后发现,Encode2RGBA后的pImage_RGBA和读取纹理后,用来存放输出的oImage都没有相应的改变代码如下:
CxImage image;
image.Destroy();
image.Load(_T("image.bmp"),0); unsigned char *pImage_RGBA=NULL,*oImage=NULL; if(!image.IsValid())
return 0; int sizeX,sizeY;
sizeX=image.GetWidth();
sizeY=image.GetHeight(); long imagesize_RGB=sizeX*sizeY*3; oImage=pImage_RGBA=new unsigned char[imagesize_RGB]; image.Encode2RGBA(pImage_RGBA,imagesize_RGB); glutInit(&argc,argv);
glutCreateWindow("a");
glewInit();
GLuint fb;
glGenFramebuffersEXT(1,&fb);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fb);
GLuint tex;
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D,tex); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D,tex,0);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,image.GetWidth(),image.GetHeight(),0,GL_RGBA,GL_BITMAP,pImage_RGBA);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadPixels(0,0,image.GetWidth(),image.GetHeight(),GL_RGBA,GL_BITMAP,oImage);
CxImage imageout;
imageout.Create(sizeX,sizeY,pImage_RGBA,0);
imageout.CreateFromArray(oImage,sizeX,sizeY,24,imagesize_RGB,false);
imageout.Save(_T("imageout.bmp"),0);
image.FreeMemory(pImage_RGBA);
glDeleteFramebuffersEXT(1,&fb);
glDeleteTextures(1,&tex);
return 0;求高手指点!
解决方案 »
- 内存和资源检查工具,Application Verifier和Bound checker哪个好用一点?
- 感谢一辈子求你帮我分析下面的网络编程!!!
- unknown software exception(0xc00000fd), 0x7c809cecc0错误
- vc中怎么打开html文件,向其中的列表(table)中写入一行 ?
- 类中的函数会丢失!!!!!????
- 如何在vc程序运行前加入初始画面???
- String的用法?
- 我要用udp协议接收一个个的数据包,用什么开源库?
- 二级线程调用pDoc->UpdateAllViews(NULL)?
- 求助一个postmessage的神奇问题
- WIN7家庭版适合编程吗?
- OnNcHitTest怎么不好使
sizeof(RGBQUAD)
image.Load(_T("image.bmp"),0);