- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
GLSL 1.50,openGL 3.3。
我最近一直在尝试让我的转换反馈发挥作用,但没有成功。在 glBeginTranformFeedback() 之后我仍然收到错误,并且由于我没有找到任何完整的工作代码,我已经用我发现的一些代码和文档积累了我的知识,它现在应该运行良好但我遗漏了一些东西。因此,如果有人有完整的代码(缓冲区的初始化、设置、更新、渲染、回读),那肯定会有所帮助,如果你不知道,但知道发生了什么,你可以看看我的代码。我排除了一些基准测试、Windows 处理及其创建:
int main()
{
bool fullsize = false, paused = false;
std::string caption = "Tester";
GLuint dataVAO,speedUpdateVBO,dataVBO;
std::vector<vector3f> dataW;
// Create the main rendering window
init(); //just some camera commands
UniShader shader; //my shader class keeps everything together
shader.init();
shader.addShader("test.vert");
shader.addShader("test.frag");
shader.newAttributeVariable("speed");
shader.newFeedbackVarying("sp");
shader.linkShader();
shader.use();
//init some data
dataW.push_back(vector3f(0,1,0));
//creating VAO
glGenVertexArrays(1,&dataVAO);
glBindVertexArray(dataVAO);
//creating VBO
glGenBuffers(1,&dataVBO);
glBindBuffer(GL_ARRAY_BUFFER,dataVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vector3f), 0, GL_DYNAMIC_DRAW);
glVertexAttribPointer(shader.getAttributeIndex("speed"), 3, GL_FLOAT, GL_FALSE, 0, 0);
glGenBuffers(1, &speedUpdateVBO);
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, speedUpdateVBO);
glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, sizeof(vector3f), NULL, GL_DYNAMIC_COPY);
glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, speedUpdateVBO);
glBindVertexArray(0);
while (App.IsOpened())
{
App.SetActive();
benchP = Clock.GetElapsedTime();
//update calls
if(!paused)
//update
benchU = Clock.GetElapsedTime();
//render calls
glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(0.6f,0.7f,0.7f);
GLuint query;
GLuint count = 0;
glGenQueries(1, &query);
glEnableVertexAttribArray(shader.getAttributeIndex("speed"));
glBindVertexArray(dataVAO);
glBindBuffer(GL_ARRAY_BUFFER,dataVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vector3f)*dataW.size(), &dataW[0], GL_DYNAMIC_DRAW);
glBindBuffer(GL_TRANSFORM_FEEDBACK_BUFFER, speedUpdateVBO);
glBufferData(GL_TRANSFORM_FEEDBACK_BUFFER, sizeof(vector3f)*dataW.size(), NULL, GL_DYNAMIC_COPY);
glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, speedUpdateVBO);
glEnable(GL_RASTERIZER_DISCARD);
glBeginQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, query);
printOglError(); //Until this everything OK, I think
glBeginTransformFeedback(GL_POINTS);
printOglError(); //This one prints out Invalid Value
glDrawArrays(GL_POINTS,0,dataW.size());
glEndTransformFeedback();
glEndQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
glDisable(GL_RASTERIZER_DISCARD);
//retrieve updated data
glGetQueryObjectuiv(query, GL_QUERY_RESULT, &count); //count is 0 -> nothing happend
glBindVertexArray(0);
glDisableVertexAttribArray(shader.getAttributeIndex("speed"));
glDeleteQueries(1, &query);
App.Display();
//some other benchmark stuff
}
着色器:垂直
#version 150 core
in vec3 speed;
varying vec3 sp;
const float gravity_constant = 9.81f;
void main(){
sp = speed;
sp += vec3(0,-gravity_constant,0);
}
片段
#version 150 core
varying vec3 sp;
void main (void)
{
vec3 c = sp;
gl_FragColor = vec4(c,1.0);
}
片段着色器仅用于 GLSL 优化。如果不使用 sp,GLSL 会清除它。可能存在一些小错误,因为我从具有多个失败的更大代码中提取了它。
最佳答案
看看OpenGL Samples Pack .您可能对 ogl-330-transform-feedback.cpp 和 ogl-400-transform-feedback-object.cpp 感兴趣。你甚至可以检查 January 2011 OpenGL drivers status最新的驱动程序是否与提供的示例有任何问题。
祝你好运。
关于c++ - 变换反馈的完整设置(openGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970922/
我以前做过很多关系数据库设计,我认为我对其中一些设计模式有经验......但是,我想不出从哪里开始解决这个问题。 我正在创建一个健身房数据库,它将在“健身房”表中包含基本的健身房信息。 然后我将有另一
大家好,我有时需要从网站上自动执行数据收集任务。有时我需要目录中的一堆 URL,有时我需要一个 XML 站点地图(是的,我知道有很多软件和在线服务)。 无论如何,作为我之前问题的后续,我编写了一个可以
我不明白为什么,但客户端库中似乎没有机制可以为 Windows Azure 表存储并行执行许多查询。我创建了一个模板类,可以用来节省大量时间,欢迎您随意使用它。不过,如果您能将其拆开,并提供有关如何改
每次我的作业中出现这些问题中的一个时,我都会弄错...任何人都可以帮助我理解吗?还是老师的 key 关了? (我没有办法知道,因为我没有得到正确的答案,它只是让我知道我的错误。) Assume x =
我计划参加为期一周的有关该主题的类(class)。我主要参与 Java 项目,并且对 C 和 C++ 也有一定的了解。而且,我有兴趣了解有关并发编程的更多信息,并希望获得有关本类(class)的反馈。
有谁知道提交 C# 4.0 反馈的官方方法,以便 Anders 和他的团队能够获得反馈并能够对提交的内容做出回应? 最佳答案 可能是论坛here ,或(对于错误)connect (他们为 .NET 4
这是我想要实现的示例 - http://home.mcafee.com/default.aspx 我想知道如何让页面右侧的反馈标签/按钮稍微打开而不是完全滑出。然后单击,我想打开一个页面(不是 jqu
我遇到过这样的情况:我有一个托管第三方网站的 iframe。我只需要知道 iframe 已导航到其最终的“成功”url,这样我就可以做出响应。 但是,正如您所知,由于 CORS 安全问题,现代浏览器会
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我使用数据库记录管理构建 JQuery/JS/PHP/mySQL 应用程序,需要在 AJAX 调用、修改后端数据库记录时向用户提供可靠且完整的反馈。恕我直言,问题是 $.ajax success: 和
要检测无效 token ,我应该多久检查一次反馈服务? 我已经使用 APNS 服务实现了一个广播系统。我打开一个连接,发送所有 APNS 消息,然后断开连接。然后我在广播完成后立即打开一个反馈连接,并
是否可以使用 shader toy 在下一帧中访问渲染图像 (GLSL)? 最佳答案 现在他们已经实现了渲染到缓冲区,所以你可以渲染到缓冲区。实际上,如果需要,您最多可以使用四个缓冲区。还有, wat
我在Delphi XE5中开发了一个数据快照服务器。 一个客户端连接到服务器。 一个客户端触发一种方法(比如说Server.ComputeTables)。 服务器正在使用ComputeTables方法
我想改进应用程序中的 AJAX 反馈(在我的模态中发布远程表单后等)。 我已经收到一些很好的反馈,显示了加载动画 $(document).ajaxStart(function(){ $('.l
我能够通过 azure-iot-sdk-python 将消息和报告属性从 iot 集线器发送到模拟设备。现在我想获得从 IoT 中心发送到设备/模块的消息的确认 (success,expired,re
我能够通过 azure-iot-sdk-python 将消息和报告属性从 iot 集线器发送到模拟设备。现在我想获得从 IoT 中心发送到设备/模块的消息的确认 (success,expired,re
我的老板想在反馈表单中添加一个选择表单,要求用户选择他/她的国家/地区。我可以通过以下方式实现这一目标: Select country = form.addItem().addSelect("
如何设置反馈,以便在输入数字时 slider 的值发生变化? JS: $('.catalog-filter-change-price_slider-range').slider({ range:
我有一个 CQRS 解决方案,它在 HTML/JavaScript 应用程序中利用 NServiceBus 和网络 worker 。 我有场景 WebAPI 发送命令 CommandHandler 更
我是一名优秀的程序员,十分优秀!