更新到 MacOs Mojave 10.14 后是否有 OpenGL 黑屏和伽玛校正?

2024-04-09

我不小心更新了我的 Mac,OpenGL 现在在最新的 MacOS Mojave 中已被弃用。我正在使用 OpenGL + GLUT(我知道这很旧,但我只需要一个简单的程序)并在终端上运行(不使用 Xcode)。使用在 Sierra 中完美运行的相同程序,我在 Mojave 中收到了很多 OpenGL 已弃用的警告,并设法使用以下命令抑制所有警告-Wno-deprecated-declarations,但现在我只看到黑屏。

Mojave 更新后,我在 OpenGL 上读到了很多与黑屏相同的问题,例如OpenGL 上黑屏 https://stackoverflow.com/questions/52657002/black-screen-on-opengl , and Mac 莫哈维 + opengl 问问题 https://stackoverflow.com/questions/52509427/mac-mojave-opengl。但到目前为止,他们都没有接受答案,并且提供的答案对我不起作用。

这是我的主循环:

Code :

static void mainLoop(void)
{    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_FRAMEBUFFER_SRGB);

    argDrawMode2D(vp);                      //draw to the screen

    char string[256];
    glColor3f(1,1,1);
    sprintf(string, "Some strings", string1 );
    argDrawStringsByIdealPos( string, 10.0, 25.0 );

    argSwapBuffers();   //clear the buffer
    glFlush();
}

我有 2 个问题:

  1. 您对如何解决黑屏问题有什么建议吗?我已经尝试过但仍然出现黑屏:

    • Change glFlush() into glutSwapBuffers()无需打电话即可冲水

    • 更改glClear(GL_COLOR_BUFFER_BIT) into glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)(这会引起更多警告)。我也尝试将颜色设置为glClearColor(255,255,255,0)(白色),但清除颜色缓冲区后,只有黑屏。所以 glClear 不起作用。

    • 尝试使用 reshape 来调整窗口大小。

    • 将终端的 Xcode 编译器更新到最新版本(Beta)

  2. 我正在使用 OpenGL 的伽玛校正glEnable(GL_FRAMEBUFFER_SRGB),在莫哈韦沙漠之后我面临着这个

    “断言失败:(值 >= 0.0f && 值

    openGL gamma 校正不再起作用了吗?

有什么建议吗?

[更新1]

上面的步骤 3:尝试使用 reshape 来调整窗口大小。

在我更改为全屏后,这个似乎可以工作一点,如下莫哈韦“黑客” http://people.bath.ac.uk/abscjkw/ComputerPrograms/C++programs/OpenGL/MojaveOpenGL.cpp来自巴斯大学,将窗口大小调整为初始大小以外的其他尺寸。当我设置为另一个尺寸(更小/更大)时它失败了,但是当我使用设置为全屏时它失败了glutFullScreen();,我的屏幕已渲染,到目前为止,帧过渡并不平滑,我仍在处理它。

另外,我将 fps 设置为 60fps 并将其打印出来。在这次黑客攻击之后,尽管我的 Mac 刷新率只有 90Hz,但我在这里获得了 100-200 fps 的随机 fps。这是因为resize命令,当我注释掉resize命令时,我得到了黑屏,但终端中打印的fps是正确的(大约60fps)。我意识到这个黑客在未来也是不可靠的。因此,这里仍然需要建议,或其他解决方案,而不是调整大小。

[更新2]

我尝试使用 GLFW 更改我的整个项目。即使使用 GLFW,仍然存在同样的黑屏问题。因此这不是 API 问题。

[更新3]

尝试彻底卸载 XCode 10(随 Mojave 更新一起提供)。然后安装 XCode 9.41 (Sierra) 和 Command Tools 9.41。截至目前,GLFW 有效,而 GLUT 仍然不起作用。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新到 MacOs Mojave 10.14 后是否有 OpenGL 黑屏和伽玛校正? 的相关文章

  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • mprotect 之后 malloc 导致分段错误

    在使用 mprotect 保护内存区域后第一次调用 malloc 时 我遇到分段错误 这是执行内存分配和保护的代码片段 define PAGESIZE 4096 void paalloc int size Allocates and ali
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • HttpWebRequest vs Webclient(特殊场景)

    我知道这个问题之前已经回答过thread https stackoverflow com questions 1694388 webclient vs httpwebrequest httpwebresponse 但我似乎找不到详细信息 在
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 为什么具有相同名称但不同签名的多个继承函数不会被视为重载函数?

    以下代码片段在编译期间产生 对 foo 的调用不明确 错误 我想知道是否有任何方法可以解决此问题而不完全限定对 foo 的调用 include
  • 分配器感知容器和propagate_on_container_swap

    The std allocator traits模板定义了一些常量 例如propagate on container copy move assign让其他容器知道它们是否应该在复制或移动操作期间复制第二个容器的分配器 我们还有propag
  • C++11 动态线程池

    最近 我一直在尝试寻找一个用于线程并发任务的库 理想情况下 是一个在线程上调用函数的简单接口 任何时候都有 n 个线程 有些线程比其他线程完成得更快 并且到达的时间不同 首先我尝试了 Rx 它在 C 中非常棒 我还研究了 Blocks 和
  • 如何随着分辨率的变化自动调整大小和调整表单控件

    我注意到某些应用程序会更改控件的位置以尽可能适应当前的分辨率 例如 如果窗口最大化 则控件的设置方式应使整个 GUI 看起来平衡 是否可以使用 C 在 Visual studio 2010 中制作或实现此功能 Use Dock http m
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • .NET 客户端中 Google 表格中的条件格式请求

    我知道如何在 Google Sheets API 中对值和其他格式进行批量电子表格更新请求 但条件格式似乎有所不同 我已正确设置请求 AddConditionalFormatRuleRequest formatRequest new Add
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 为什么我的 PyGame 应用程序根本不运行?

    我有一个简单的 Pygame 程序 usr bin env python import pygame from pygame locals import pygame init win pygame display set mode 400
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 使用 HTMLAgilityPack 从节点的子节点中选择所有

    我有以下代码用于获取 html 页面 将网址设置为绝对 然后将链接设置为 rel nofollow 并在新窗口 选项卡中打开 我的问题是关于将属性添加到 a s string url http www mysite com string s
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过

随机推荐