问题标签 [nsopengl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
977 浏览

objective-c - 在 NSWindow 中绘图

我正在为图形框架开发可可包装器。

为了最终绘制这些东西,我正在这样做:

在 的子类中NSView

现在我查看了其他框架,如 Gosu、Irrlicht 等,我发现它们总是在做一些复杂的NSOpenGL事情,比如:

他们为什么要这么做?我的“简单”方式可以吗?

0 投票
1 回答
197 浏览

cocoa - 用于非绘图目的的 NSOpenGLContext

如何NSOpenGLContext在 Cocoa 中创建一个独立于系统的系统,不是用于绘图,而是用于检索供应商、版本等 OpenGL 信息????

0 投票
1 回答
2009 浏览

multithreading - 使用 NSOpenGLLayer 从单独的线程中绘制

我正在开发一个应用程序,该应用程序需要以至少等于显示器刷新率的刷新率使用 OpengGL 进行绘制。而且我需要在单独的线程中执行绘图,以便绘图永远不会被激烈的 UI 操作锁定。

实际上,我正在使用 a NSOpenGLViewCVDisplayLink并且我能够毫无问题地达到 60-80FPS。

由于我还需要在此视图之上显示一些可可控件,因此我尝试按照LayerBackedOpenGLView Apple 示例进行子类NSOpenGLView化并使其具有图层支持。

结果并不令人满意,我得到了很多工件。

因此,我已经解决了这个问题,使用单独NSWindow的可可控件托管并将此窗口添加为包含NSOpenGLView. 它工作正常,我能够获得与初始实现完全相同的 FPS。

由于我认为这个解决方案很像一个肮脏的黑客,我正在寻找一种替代的、更干净的方式来实现我所需要的。

几天前我遇到了NSOpenGLLayer,我认为它可以用作解决我的问题的可行解决方案。

所以最后,在所有这些序言之后,我的问题来了:是否可以使用回调NSOpenGLLayer从单独的线程中绘制到 a ?CVDisplayLink

到目前为止,我已经尝试实现这一点,但我无法从CVDisplayLink回调中提取。我只能-setNeedsDisplay:TRUE在回调中执行绘图,然后在NSOpenGLLayer可可自动调用它时执行绘图。但我想这样我是从主线程中绘制的,不是吗?CVDisplayLink-drawInOpenGLContext:pixelFormat:forLayerTime:displayTime:

在谷歌搜索之后,我什至发现了这个帖子,其中用户声称在 Lion 下绘图只能发生在里面-drawInOpenGLContext:pixelFormat:forLayerTime:displayTime:

我目前在 Snow Leopard 上,但即使在 Lion 上,该应用程序也应该可以完美运行。

我错过了什么吗?

0 投票
0 回答
174 浏览

xcode - 在 ScrollView 中嵌入 NSOpenGlViews 不会产生预期的滚动行为

我在滚动视图中嵌入了三个 NSOpenGLView。滚动会产生意外行为。NSOpenGLViews 拒绝被滚动视图的底部剪裁,而是在滚动视图的底部被调整为更小的长度。在某些情况下,NSOpenGlViews 会开始重叠。

0 投票
1 回答
5615 浏览

objective-c - 带有 NSOpenGLView 的 OpenGL 3.2

如何在 NSOpenGLView 的自定义实现中创建核心配置文件?我应该覆盖哪个方法,应该放什么代码?

到目前为止,我有这个代码:

0 投票
1 回答
126 浏览

cocos2d-iphone - cocos2d CCDirectorMac - self.view.openGLContext flushBuffer 上的 SIGABRT

我有一个 cocos2d Mac 应用程序。创建和添加 Sprite 时出现随机崩溃。

基本上我得到了 SIGABRT

在 CCDirectorMac 中。

截图在这里: http ://www.zentralnorden.com/temp/crash0220.png

关于如何解决这个问题的任何建议都是有帮助的。

0 投票
0 回答
534 浏览

objective-c - OSX 上的 NSOpenGL I420 YUV 缓冲区渲染

在我的应用程序中,我必须显示从服务器接收到的 YUV 帧,YUV 图像格式是 I420,

我有这样的子类 NSOpenGLView,

和 OpenGL 视图在视图上创建类似这样的东西,

我直接在屏幕上显示I420,为此,顶点和着色器程序是这样的,

在子类视图中,我正在像这样设置视口大小,

我看到的是底部和右侧有点损坏,请参考图片,

请帮助我,无法弄清楚,出了什么问题,

如果您参考图像,我在底部和右侧绘制了红色矩形,这是不必要的

在此处输入图像描述

0 投票
3 回答
2446 浏览

macos - OpenGL 无法在 macOS Mojave 上渲染

如果您在 macOS Mojave 上创建NSView和自定义NSOpenGLContext,则在调整大小之前不会渲染窗口。但是,如果您改用它,一切都会起作用NSOpenGLView。我看到很多以编程方式调整窗口大小的黑客(http://people.bath.ac.uk/abscjkw/ComputerPrograms/C++programs/OpenGL/MojaveOpenGL.cpp),然后再渲染或调用[NSOpenGLContext update]两次(https:// github.com/go-gl/glfw/pull/229/commits/9e6129a572227a13ff9acb4904443d2ae7d66e77),但它们看起来真的很老套且不可靠。