以下代码不会将数据写入英特尔集成显卡的后缓冲区,例如,在MacBook上。 在ATI卡上,例如在iMac中,它会吸引到后台缓冲区。 宽度和高度正确(和800x600缓冲区),m_PixelBuffer正确填充0xAA00AA00。

到目前为止,我最好的猜测是需要glWindowPos设置有些不对劲。 我当前没有设置它(或光栅位置),当我得到GL_CURRENT_RASTER_POSITION时,我注意到ATI卡上的默认值是0,0,0,0而Intel是0,0,0,1。 当我将ATI卡上的光栅位置设置为0,0,0,1时,我得到与英特尔卡相同的结果,没有任何内容被吸引到后置缓冲区。 我缺少一些转换状态吗? 这是一个2D应用程序,因此视图转换是一个非常简单的glOrtho。

glDrawPixels(GetBufferWidth(), GetBufferHeight(), GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, m_PixelBuffer);

我可以提供更多信息,请询问。 我几乎是一个OpenGL和Mac newb所以我不知道我是否提供了足够的信息。

===============>>#1 票数:2

我一直遇到来自英特尔的OpenGL实现的问题,虽然我不确定这次是你的问题。 我认为你遇到了一些字节顺序问题。 给它一个阅读,并随意尝试不同的常量包装和颜色顺序。

http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_tips/chapter_5_section_25.html

我知道它是OSX指南,您可以在其他站点上找到类似的OpenGL文章,用于其他平台。 这应该适用。

===============>>#2 票数:1

默认栅格位置应为(0,0,0,1),但您可以重置它以确保。

在调用glDrawPixels()之前,请尝试

GLint valid;
glGet(GL_CURRENT_RASTER_POSITION_VALID, &valid);

这应该告诉您当前的栅格位置是否有效。 如果是,那么这不是你的问题。

===============>>#3 票数:1

我一直遇到来自英特尔的OpenGL实现的问题

这就是我所担心的,但我很难相信他们搞砸像glDrawPixels这样基本的东西,而且,因为我可以通过改变光栅位置向量来“复制”这个问题,它让我认为这是我的错,我错过了一些基本的东西。

我认为你遇到了一些字节顺序问题

这是我的第一个倾向,我尝试过不同的包装,没有结果。 我还尝试用缓冲区填充缓冲区,这些值会在调整时显示可用的alpha值,但没有结果。 这就是我咆哮光栅pos树的原因,但老实说我还不是100%肯定。 请注意,如果有所不同,我的目标只是英特尔Mac。

感谢这个链接,这是一个很好的阅读,并且很好地收集以备将来参考。 我upmod但我不能,直到我得到3个更多的积分:)

===============>>#4 票数:1

glDrawPixels这样的基本函数可能无法正常工作。 您是否尝试过一些非常简单的设置,例如GL_RGBGL_RGBA用于格式, GL_UNSIGNED_BYTEGL_FLOAT用于类型? 如果没有,您能与我们分享最复杂的程序来复制您的问题吗?

  ask by Chris Blackwell translate from so

未解决问题?本站智能推荐:

1回复

macOS上的OpenGL VSync / NSTimer问题

我试图建立在MacOS一个简单的OpenGL游戏,使用NSTimer建立一个运行循环的解释在这里 。 我们的想法是创建一个具有非常小(~1ms)时间间隔的重复计时器,并依靠vsync来调节帧速率。 我将我的NSOpenGLContext交换间隔设置为值1,这应该启用vsync。 我的印
1回复

OpenGL纹理单元的范围是什么?

显然,OpenGL纹理单元的范围并不比单个进程宽 - 在同一系统上,每个glActiveTexture​(GL_TEXTURE0); glBindTexture(...);都可以有多个进程glActiveTexture​(GL_TEXTURE0); glBindTexture(...); glA
1回复

通过PBO将纹理上传到GPU不起作用(OpenGL版本4.1)

我已经阅读了著名的OpenGL像素缓冲区对象(PBO)教程。 我在计算机上测试了示例代码,并且该代码可以正常工作(尽管启用了PBO,其性能并没有提高,但至少可以正确呈现)。 问题在于示例代码中的OpenGL上下文版本很旧( Version: 2.1 INTEL-10.22.29 ),而我
1回复

OpenGL GLSL,从“背后”停留查看金字塔

看来我的金字塔在前面较小,在后面较大。 这是顶点着色器: 当我运行代码时,得到此图像,请注意,看起来金字塔的背面比前面大: 我圈了“前”角(尽管我应该从另一侧看到它,因此它们实际上是后角)。 关于问题可能出在哪里有什么想法或建议?
1回复

在OSX上链接OpenGL框架

我有一台运行OpenGL 4.x支持的优胜美地的Mac,但是,每当我使用“ -lSDL2 -framework OpenGL”标志编译c ++项目时,它都会自动使用OpenGL 1.20,安装在/ System / Library / Frameworks下。 正确的版本安装在/Applica
4回复

如何在用C编写的GLUT程序上设置关闭操作? (如左上角的红色按钮即可工作)

我正在XCode 4.2中使用GLUT和C编写一个非常简单的程序。 窗口打开后,我无法通过左上角的红色按钮(Mac)将其关闭,因为它是灰色的。 如果我完成的任何Java编程都是模型,则应该有一些函数设置关闭操作,以便红色退出按钮起作用。 我似乎也找不到最新版本的GLUT的文档。 每
3回复

动态3D阵列上的OpenGL glDrawPixels

你如何绘制的OpenGL glDrawPixels()以下动态三维数组? 你可以在这里找到的文档: http://opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawpixels.html 我只能使用下面的头
1回复

OSX Mountain Lion OpenGL-glDrawPixels()无法正常工作

我正在尝试获取一些基本的演示以在OpenGL的OSX Mountain Lion上工作。 有些有效,但基本的无效。 具体来说,我在X窗口上看到了垃圾。 这是一个演示中的代码(很抱歉,如果格式化搞乱了): 这是我得到的: 错误
2回复

使用glDrawPixels显示像素图

我已经编写了一个使用OpenGL和GLUT的小示例程序,以使用glDrawPixels函数显示由四个彩色正方形组成的2×2网格。 不幸的是,我发现: 网格中的颜色显示不正确; 和 向glPixelZoom函数传递负参数以旋转像素图时,窗口中将不显示任何内容。 以下C
1回复

OpenGL视频RAM限制

我一直在尝试制作跨平台的2D在线游戏,而我的地图是由瓷砖制成的。 我用来渲染图块的tileset非常大。 我想知道如何禁用硬件渲染,或者至少使其更强大。 因此,我想知道视频ram的基本限制是什么,据我所知,Direct3D具有纹理大小限制(通过这种方式,我不是指2的幂次方纹理大小)。