解决方案 »
- 一段神奇的代码,只能靠高手解决了。代码很好懂 ,但是结果 很神奇
- 客户端链接服务器后接着又退出了?
- VC高手请进!!!!!!!!!!
- 如何去除Direct3D中平面上的三角形暗区?
- 请教如何获得某个打开的ie页面中的元素
- Socket问题,我做的控制台程序,用Api进行网络连接,connct,select,接收数据,在循环中不停的接收数据,为什么自己关掉了?
- 一个"turboc"的简单问题.
- 一个勤奋初学者的问题:如何初始化一个已存在的窗体?
- 请问中距离(<100KM)数据访问一般采用什么方案。
- 深圳新港富岛科技有限公司 网上字典 项目 外包
- TEECHARTv5.0下如何保存图片文件?
- Opencv程序移植问题
现在程序运行报错:GLUT: failed to open display. 也就是说程序不能创建窗口。
我就想知道,不使用glew,就不能使用FBO吗?
CDC MemImg;
CBitmap MemBitmap;
HGLRC hRC;
MemImg.CreateCompatibleDC(NULL);
MemBitmap.CreateCompatibleBitmap(this->GetDC(), XPIXEL, YPIXEL);
MemImg.SelectObject(&MemBitmap);
int PixelFormat;
PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), // Structure size.
1, // Structure version number.
PFD_DRAW_TO_WINDOW | // Property flags.
PFD_SUPPORT_OPENGL |
PFD_SUPPORT_GDI,
PFD_TYPE_RGBA,
24, // 24-bit color.
0, 0, 0, 0, 0, 0, // Not concerned with these.
0, 0, 0, 0, 0, 0, 0, // No alpha or accum buffer.
32, // 32-bit depth buffer.
0, 0, // No stencil or aux buffer.
PFD_MAIN_PLANE, // Main layer type.
0, // Reserved.
0, 0, 0 // Unsupported.
};
PixelFormat = ChoosePixelFormat(MemImg, &pfd);
SetPixelFormat(MemImg, PixelFormat, &pfd); //设置设备描述表的像素格式
hRC = wglCreateContext(MemImg); //指定的设备描述表产生一个图形操作描述表
wglMakeCurrent(MemImg, hRC); //指定当前的DC,RC
//画图
glFlush();
SwapBuffers(MemImg);
//glReadPixels
wglMakeCurrent(NULL, NULL);
你说的本身是没有错的,只是不能实现我的要求:1)我不想创建窗口,你这里用到了DC,应该需要创建窗口;2)我的程序需要跨平台(主要实在linux下),所以不能使用windows下的API,因此我选择了使用glut;3)我现在的疑问是,OpenGL能否不创建窗口进行渲染(按我目前所知,不能!不知道有没有大神可以给个肯定的答复)。
依然谢谢你。
*(FARPROC *)&qwglGetProcAddress = GetProcAddress(hOpenGL, "wglGetProcAddress");
const char *extension = (const char *)qglGetString(GL_EXTENSIONS);
if (strstr(extension, "GL_EXT_framebuffer_object"))
{
qglDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)qwglGetProcAddress("glDeleteFramebuffersEXT");
qglDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)qwglGetProcAddress("glDeleteRenderbuffersEXT");
qglGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)qwglGetProcAddress("glGenFramebuffersEXT");
qglBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)qwglGetProcAddress("glBindFramebufferEXT");
qglGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)qwglGetProcAddress("glGenRenderbuffersEXT");
qglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)qwglGetProcAddress("glBindRenderbufferEXT");
qglFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)qwglGetProcAddress("glFramebufferRenderbufferEXT");
qglCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)qwglGetProcAddress("glCheckFramebufferStatusEXT");
qglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)qwglGetProcAddress("glRenderbufferStorageEXT");
qglFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)qwglGetProcAddress("glFramebufferTexture2DEXT"); gl_framebuffer_object = true;
}
直接用不行吗?为什么非得glew?
顺便这个直接渲染到纹理就行了吧,没必要开FBO