- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Cocoa (OSX) 项目,目前非常简单,我只是想掌握使用 OpenGL 背后的一般概念。我能够在 View 中显示一个三角形,但是当我去编写顶点着色器和片段着色器时,我意识到我正在运行旧版 OpenGL 核心配置文件。因此,在生成上下文之前,我通过以相关 View 的像素格式设置属性来切换到 OpenGL 3.2 配置文件,但现在即使没有顶点或片段着色器,三角形也不会渲染。
我有一个用于在 Nib 中实例化的 View 的 Controller 类。在 -awakeFromNib
上,它设置像素格式和上下文:
NSOpenGLPixelFormatAttribute attr[] =
{
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
0
};
NSOpenGLPixelFormat *glPixForm = [[NSOpenGLPixelFormat alloc] initWithAttributes:attr];
[self.mainView setPixelFormat:glPixForm];
self.glContext = [self.mainView openGLContext];
然后我生成 VAO:
glGenVertexArrays(1, &vertexArrayID);
glBindVertexArray(vertexArrayID);
然后是 VBO:
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
g_vertex_buffer_data
,该缓冲区的实际数据定义如下:
static const GLfloat g_vertex_buffer_data[] = {
-1.0f, -1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
0.0f, 1.0f, 0.0f,
};
这是实际绘图的代码:
[_glContext setView:self.mainView];
[_glContext makeCurrentContext];
glViewport(0, 0, [self.mainView frame].size.width, [self.mainView frame].size.height);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, self.vertexBuffer);
glVertexAttribPointer(
0,
3,
GL_FLOAT,
GL_FALSE,
0,
(void*)0
);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDrawArrays(GL_TRIANGLES, 0, 3); // Starting from vertex 0; 3 vertices total -> 1 triangle
glDisableVertexAttribArray(0);
glFlush();
如果我注释掉 NSOpenGLPixelFormatAttribute
数组中的 NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
,此代码可以很好地绘制三角形,但一旦我启用 OpenGL Core Profile 3.2,它就会显示黑色。谁能告诉我我在这里做错了什么?
编辑:无论我是否打开顶点和片段着色器,此问题仍然会发生,但这里是我的着色器,以防有帮助:
顶点着色器:
#version 150
in vec3 position;
void main() {
gl_Position.xyz = position;
}
片段着色器:
#version 150
out vec3 color;
void main() {
color = vec3(1,0,0);
}
就在链接程序之前,我进行此调用来绑定(bind)属性位置:
glBindAttribLocation(programID, 0, "position");
编辑2:
我不知道这是否有帮助,但我只是单步执行我的程序,运行 glGetError()
,看起来一切都很好,直到我真正调用 glDrawArrays()
,然后返回GL_INVALID_OPERATION
。我试图找出为什么会发生这种情况,但仍然没有运气。
最佳答案
我明白了这一点,可悲的是,这对我来说是一个非常愚蠢的错误。
我认为问题是,在使用 3.2 核心配置文件时,您需要一个顶点着色器和一个片段着色器,没有它们就无法渲染。它不能与我的着色器一起使用的原因是...等待它...链接我的着色器程序后,我忘记将程序ID存储在我的类中的ivar中,所以稍后当我调用 glUseProgram() 时,我只需使用零参数调用它即可。
我猜造成困惑的主要来源之一是我希望 3.2 核心配置文件无需任何顶点或片段着色器即可工作。
关于cocoa - 当我使用 OpenGL Core Profile 3.2 时,我的三角形不渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13107393/
在 Python 2.7 和 Python 3.6 中,我发现这有效: from cProfile import Profile; p = Profile(); p.enable() ...而这引发了
我正在尝试在 Windows 8 PRO 64 位上的 Visual Studio 2012 RTM 中为控制台程序启动性能分析 session (分析/启动性能分析)。 我收到一条弹出消息通知我 C
我在 windows 上有一个应用程序,它在单声道上运行得很好。但是,当我尝试对其进行分析时: mono --profile=log program.exe 我得到: The 'log' profil
我正在尝试使用 Django 创建注册表单。我在提交表单时收到此错误。 这就是我所做的。 models.py from django.db import models from django.cont
是否可以从 Flash Builder 导出分析结果? 我需要它们,因为我想根据方法名称进行过滤,但 Flash Builder 的内置过滤不允许这样做。 最佳答案 它隐藏在 GUI 的一个完全隐蔽、
我真的很喜欢热图,但我需要的是热图背后的数字(又名相关矩阵)。 有没有简单的方法来提取数字? 最佳答案 从文档开始追踪有点困难;具体来说 来自 report structure然后深入研究以下函数 g
我有一个 POM,它声明了我的项目常见的 Web 应用程序内容。我将它用作所有 Web 应用程序的父级。 是否可以仅在包装为 war 时激活配置文件?我已经尝试过属性方法,但这不起作用(因为它不是系统
在数据帧上运行 pandas-profiling 时,我看到它将索引分析为一个变量。注意:我的索引是唯一键(命名为UUID) 有没有办法排除引入索引上报? 我知道我可以在 pandas 中删除它,但在
在数据帧上运行 pandas-profiling 时,我看到它将索引分析为一个变量。注意:我的索引是唯一键(命名为UUID) 有没有办法排除引入索引上报? 我知道我可以在 pandas 中删除它,但在
我正在使用 Intel Vtune 来分析需要在另一台机器上进行 sudo 访问的远程应用程序。之前我已经能够在不需要 sudo 访问的那台机器上分析远程应用程序,但英特尔 Vtune 不适用于需要
我已经在我的 MVC 4 应用程序上安装了 Mini-Profiler,它运行得非常棒。我遇到的唯一问题是 UI 覆盖了我 UI 的关键部分。我可以使用 css 在页面上移动它,但理想情况下我想这样做
在使用 Chrome devtools 分析堆快照时,我似乎无法弄清楚查看分离的 DOM 树时颜色的含义。红色和黄色有什么区别? 最佳答案 有很好的解释available here . 从文章: Re
分析器中 SQL Server 跟踪的输出包含 CPU 和持续时间列(以及其他列)。这些值的单位是什么? 最佳答案 CPU 以毫秒为单位。在 sql server 2005 及更高版本中,保存到文件或
我有一个奇怪的问题,我正在使用 MiniProfiler,它很棒,在我的本地机器上没有任何问题,但它在我们的测试服务器上的表现似乎有所不同。它似乎会生成许多对 mini-profiler-resour
我想知道优先级 的application-{profile}.properties文件,如果有多个 spring.profiles.active添加。 例如: 比方说,我有这个 spring.prof
我有一个名为“isActive”的助手和一个名为“create”的模板.. 见下文 Template.create.isActive = function () { return Meteor.u
这是我面临的场景:我正在使用 MiniProfiler 来分析一些操作。但它缺少我必须使用的特定功能。有一个设置文件 MiniProfiler 可以让我做一些配置,比如分析什么考虑什么,什么不考虑,什
哇,这完全令人困惑,而且 dojo 1.8 文档似乎是围绕构建层的完整 clusterf**k。有人知道那里发生了什么吗? 在构建脚本示例配置文件中,示例 amd.profile.js 有 profi
我正在为一个内部项目使用出色的 MVC Mini Profiler,但希望它能够显示时间信息,无论您是谁。理想情况下,如果用户是站点的管理员或开发人员,我希望能够显示完整的分析信息,如果用户只是标准用
打开Android Profiler编译出现如下错误: FAILURE:构建失败并出现异常。 什么地方出了错: Execution failed for task ':app:transformCla
我是一名优秀的程序员,十分优秀!