我想用两个PBO以另一种方式读取像素.我认为PBO方式会更快,因为glReadPixels在使用PBO时会立即返回,并且很多时间可以重叠.
奇怪的是似乎没有太大的好处.考虑一些代码,如:
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
Timer t; t.start();
glReadPixels(0,0,1024,1024,GL_RGBA, GL_UNSIGNED_BYTE, buf);
t.stop(); std::cout << t.getElapsedTimeInMilliSec() << " ";
glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pbo);
t.start();
glReadPixels(0,0,1024,1024,GL_RGBA, GL_UNSIGNED_BYTE, 0);
t.stop(); std::cout << t.getElapsedTimeInMilliSec() << std::endl;
Run Code Online (Sandbox Code Playgroud)
结果是
1.301 1.185
1.294 1.19
1.28 1.191
1.341 1.254
1.327 1.201
1.304 1.19
1.352 1.235
Run Code Online (Sandbox Code Playgroud)
PBO的方式有点快,但不是令人满意的立即回报.
我的问题是:
================================================== =========================
根据与演示的比较,我发现了两个因素:
然后另外两个问题:
可能重复:
无法解析的重载函数类型c ++
考虑下面的代码片段:
#include <algorithm>
#include <cctype>
#include <string>
using namespace std;
void test(){
std::string str = "Hello World!";
std::transform(str.begin(), str.end(), str.begin(), tolower);
}
Run Code Online (Sandbox Code Playgroud)
tolower使用G ++编译时出现错误:未解析的重载函数。
如果using namespace std;将其删除,则代码可以正常工作。
然后,我的问题是:
namespace std与C函数之间的关系是什么?#include<ctype.h>和之间有什么区别#include<cctype>?尽管在以上示例中它们都不起作用。std::tolower还不起作用?std::tolower和之间有什么区别tolower?