问题标签 [nsopenglview]
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.
objective-c - 带有 NSOpenGLView 的 OpenGL 3.2
如何在 NSOpenGLView 的自定义实现中创建核心配置文件?我应该覆盖哪个方法,应该放什么代码?
到目前为止,我有这个代码:
macos - GLSL 示例在 mac 上不起作用
我正在尝试在 Mac 上创建一个 GLSL 示例。我正在尝试为每个顶点设置一个颜色属性。但是,当程序运行时,我只是得到一个紫色的屏幕(紫色来自 glClearColor)。我发布了相关的代码片段。
然后加载阴影代码:
最后是着色器:
和
objective-c - NSScrollView 中的 NSOpenGLView?
我的 NSOpenGLView 有缩放方法。如果图像被放大,则 NSOpenGLView 帧大小、视口等正在增加。如果 NSOpenGLView 被缩小(帧大小、视口等正在减少),也会发生同样的事情。所以我需要,如果图像被放大,NSOpenGLView 比我的窗口大,滚动条应该出现。所以我认为将 NSOpenGLView 放到 NSScrollView 将是我的解决方案。但事实并非如此。它不起作用。那我怎么能做到呢?
cocoa - 帮助我理解 OpenGL glGenBuffers()
这是交易:如果我留下代码glGenBuffers(1, vertexBuffers)
,代码编译并工作。但是,我认为它应该是2
因为它vertexBuffers
是 2 号。
我错过了什么吗?
下面的代码:
macos - OpenGL立方体没有显示,它可能有近平面和远平面吗?
尝试进行手动透视转换后,我无法显示我的立方体我的代码如下。我怀疑这可能是我的远近飞机号码。
问题可能是什么?哦,还有着色器:
好的,将我的代码的一部分更改为如下所示:
我明白了:
后端(绿色)不应该在远处看起来更小而不是更大,就像梯形底座一样吗?
cocoa - 如何使用 Cocoa (Mac) 绘制两个 NSOpenGLViews
我想使用 XCode 在 Cocoa App 中绘制两个 NSOpenGLViews,每个视图中都有不同的东西。我想我必须使用 NSOpenGLContext 和 SetView 方法。但我还没有找到如何准确地使用它。我必须在哪里使用这个电话?这是正确的方法吗?
macos - NSOpenglContext 资源,不正确的渲染
我无法让 NSOpenGLContext 正常工作。我有一个静态对象(3D 引擎)来处理所有 opengl 的东西、资源、vbos 等。
对于可可版本,我创建了一个像这样的 NSOpenGLContext:
引擎初始化后,我创建了一个 NSView。创建 NSView 后,在 prepareOpenGL 函数中,我只需将 NSOpenGLContext 成员设置为引擎中的当前 NSOpenGLContext :
然后,在 NSView 的函数 lockFocus 中,我为上下文设置了视图:
现在,在绘制时我无法获取要绘制的资源,我只有很多缓冲区工件。
我尝试使用共享选项为 NSView 创建第二个上下文,但结果相同。
c++ - 无法从 glGetShaderInfoLog 检索错误消息
我正在尝试构建一个由单个片段着色器组成的简单 OpenGL 3.2 程序,但我似乎无法实际编译着色器。我相当确定我的着色器语法是正确的,但即使不是,我也无法使用glGetShaderInfoLog
.
我开发了一个简短的程序来展示这一点:
这会产生以下消息:
着色器片段着色器中的编译错误:
问题似乎是每次getShaderiv
检索GL_INFO_LOG_LENGTH
值的调用都返回 0,因此我分配了一个空字符串。我已经尝试将此值硬编码为 100,但我仍然没有从getShaderInfoLog
.
我在这里关心的不是修复着色器(如果错误我可以自己修复),而是获取调试信息。我知道这是可以做到的,因为我曾经使用Shader Maker简单地开发过着色器,并且能够得到非常详细的调试信息。例如:
ERROR: 0:11: 'undefined_variable' : syntax error syntax error
除非 Shader Marker 在内部有自己的验证工具,否则我确信它必须使用我尝试使用的相同方法。我在互联网上看到了几个示例,其中人们以相同的方式检索着色器的错误消息,所以我相当确定我做得正确。
现在,我收到了一个编译时警告,它可能解释了这个问题:
#warning gl.h and gl3.h are both included. Compiler will not invoke errors if using removed OpenGL functionality.
进行全文搜索后,我找不到任何我调用的地方#include <OpenGL/gl.h>
,所以我猜测这个标题被其中一个NSOpenGL*
类包含。我很确定我没有在这个短程序中使用任何已删除的功能,而且这个问题在 Google 上只有大约 5 次点击,但我想我还是最好提一下。
macos - 在后台线程上渲染 OpenGL,并且仍然可以在 Mac OSX 中使用 Cocoa Controls
我正在开发基于 OpenGL 的 mac osx 控件。目前我正在使用 NSOpenGLView 和 CVDisplayLink 来协调我在后台线程上的渲染。这很好用,但我需要允许 Cocoa 控件显示在这个基于 OpenGL 的控件上。
我意识到您可以通过将 Cocoa 控件放在无边框窗口中来做到这一点,但是,对于我的用户来说,这似乎不是一个很好的工作流程。
或者,我可以让视图层支持并且我得到了它的工作,但是我不喜欢在主线程上渲染我的 OpenGL 内容,有时它会在帧速率下降时阻塞主线程。
是否有任何示例展示了如何实现两全其美?
cocoa - OpenGL渲染到纹理
我知道以前有人问过这个问题(我确实搜索过),但我向你保证这个是不同的。
我正在为 Mac OS X Mountain Lion 制作应用程序,但我需要添加一点点绽放效果。我需要将整个场景渲染为屏幕大小的纹理,减小纹理的大小,将其传递给像素缓冲区,然后将其用作四边形的纹理。
我再次问这个问题是因为一些常用的技术似乎不起作用。我不能在片段着色器中使用#version
、layout
或out
,因为它们无法编译。如果我只是gl_FragColor
正常使用,我会在我的应用程序后面得到随机的屏幕片段,而不是我试图渲染的场景。该文档没有说明这些事情。
那么,基本上,如何使用 OpenGL 的 Mac 实现正确渲染到纹理?您是否需要使用扩展来执行此操作?
我使用这里的代码