草庐IT

缓冲池

全部标签

Android OpenGL ES 帧缓冲区对象 - 将深度缓冲区渲染到纹理

我正在使用运行支持OpenGLES1.1和OpenGLES2.0的Froyo的Android设备我想将深度缓冲区渲染为纹理。在其他平台(包括iPhone)上看到了OpenGL、OpenGLES的大量示例后,我尝试了多种FBO配置。我似乎能够获得带有颜色纹理的FBO设置,但每次我附加深度纹理时都会失败。我当前的代码基于thisexample但同时创建颜色纹理,而不是将绘制和读取缓冲区设置为无。是否有在Android上配置OpenGLESFBO以渲染纹理深度的简单示例?或者是否有描述支持和不支持的文档?感谢您的评论-我特别需要一个适用于ES1.1的解决方案,如果它可以在Android上找到

c++ - 你能举一个缓冲区溢出的例子吗?

我听说过很多关于缓冲区溢出的事,我相信我理解这个问题,但我仍然没有看到say的例子charbuffer[16];//codethatwilloverwritethatbufferandlaunchnotepad.exe 最佳答案 “粉碎堆栈以获得乐趣和利润”是关于该主题的最佳方法/常见问题解答。参见:http://insecure.org/stf/smashstack.html这是一些实际shellcode的片段:charshellcode[]="\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x0

c++ - 声明硬编码 std::string 会导致缓冲区溢出

我的程序中有以下行会导致运行时警告:if(!is_directory("C:\\NGFMS_Debug\\Files")&&!create_directories("C:\\NGFMS_Debug\\Files"))警告的文本​​是这样的:“XXX.exe中发生了缓冲区溢出,它破坏了程序的内部状态。”警告出现在对“is_directory(...)”的调用中。我猜字符串的空间没有分配,但我认为这样的语法是合法的。is_directory函数是boost/filesystem.hpp的一部分,我正在使用以下命名空间:usingnamespaceboost;usingnamespacebo

c++ - OpenGL 中的缓冲区到底是什么,我如何使用多个缓冲区来发挥我的优势?

不久前,我试用了OpenGL指南中的一个程序,据说是双缓冲的;它在屏幕上显示一个旋转的矩形。不幸的是,我已经没有这本书了,而且我也没有找到关于缓冲区一般是什么的清晰、直接的定义。我的猜测是它是一个画东西的“地方”,在那里使用很多就像分层一样?如果是这样,我想知道我是否可以将多个缓冲区用于多边形裁剪程序以发挥我的优势。我有一个漂亮的小窗口,允许用户在屏幕上绘制多边形,还有一个实用程序可以在多边形上拖动和绘制一个选择框。当用户绘制了选择矩形并松开鼠标时,多边形将根据矩形边界进行裁剪。这已经足够可行了,但我还希望用户能够重新开始:按下退出键时,剪辑框应该消失,并且应该恢复原来的多边形。因为我

c++ - 双缓冲? Win32 C++

我正在尝试实现双缓冲,但它似乎不起作用,即图形仍然闪烁。每次鼠标移动时都会调用WM_PAINT。(WM_MOUSEMOVE)下面粘贴了WM_PAINT:caseWM_PAINT:{hdc=BeginPaint(hWnd,&ps);//TODO:Addanydrawingcodehere...RECTrect;GetClientRect(hWnd,&rect);intwidth=rect.right;intheight=rect.bottom;HDCbackbuffDC=CreateCompatibleDC(hdc);HBITMAPbackbuffer=CreateCompatibleB

c++ - 一个大的 OpenGL 顶点缓冲区,还是许多小的?

假设我有5个实体(对象),其方法为Render()。每个实体都需要在缓冲区中设置自己的顶点以进行渲染。以下两个选项哪个更好?使用一个由glGenBuffer创建的大型预分配缓冲区,每个实体都将通过将其顶点写入用glBufferSubData缓冲。每个实体都创建并使用自己的缓冲区。如果一个大缓冲区更好,我如何使用适当的着色器和所有内容正确渲染此缓冲区中的所有顶点(来自所有实体)? 最佳答案 拥有多个VBO很好,只要它们具有一定的大小。您想要避免的是有很多小的绘制调用,并且必须非常频繁地绑定(bind)不同的缓冲区。缓冲区必须有多大才能

c++ - 为什么 cerr 刷新 cout 的缓冲区

#includeusingstd::cout;usingstd::endl;usingstd::cerr;#includeintmain(){charpbuffer[BUFSIZ];setbuf(stdout,pbuffer);cout在我编译并运行上面的程序后,它的输出是:hellocouthellocerrAlldone但我认为应该是:hellocerrhellocoutAlldone我想知道,为什么cerr刷新cout的缓冲区? 最佳答案 这是设计使然。cin和cerr都绑定(bind)到cout,并在它们自己的任何操作之前调

c++ - 直接写入 std::string 的 char* 缓冲区

所以我有一个std::string和一个接受char*并写入其中的函数。由于std::string::c_str()和std::string::data()返回constchar*,我不能使用它们。所以我正在分配一个临时缓冲区,用它调用一个函数并将它复制到std::string。现在我计划处理大量信息,复制此缓冲区会产生明显的影响,我想避免它。有些人建议使用&str.front()或&str[0]但它会调用未定义的行为吗? 最佳答案 C++98/03不可能。字符串可以在写入时复制,因此它需要处理所有读取和写入。C++11/14在[s

Unity3D 基础——使用 Mathf.SmoothDamp 函数制作相机的缓冲跟踪效果

使用Mathf.SmoothDamp函数制作相机的缓冲跟踪效果,让物体的移动不是那么僵硬,而是做减速的缓冲效果。将以下的脚本绑定在相机上,然后设定好target目标对象,即可看到相机的缓动效果。通过设定smoothTime的值,可以调节缓动效果的持续时间。Mathf-SmoothDamp-Unity脚本APIhttps://docs.unity.cn/cn/current/ScriptReference/Mathf.SmoothDamp.htmlMathf.SmoothDamppublicstaticfloat SmoothDamp (float current,float target,re

c++ - 使用顶点缓冲对象 (VBO) 渲染 Kinect 点云

我正在尝试制作动态点云可视化工具。使用Kinect传感器每帧更新这些点。为了抓取帧,我使用OpenCV和GLUT来显示。OpenCVAPI为点xyz位置返回640x480(float*),为rgb颜色数据返回640x480(int*)。为了获得最佳性能,我尝试在流模式下使用顶点缓冲区对象而不是简单的顶点数组。我能够用顶点数组渲染它,但我的VBO实现没有渲染任何东西。我在声明中尝试了一堆不同的命令,但我找不到我遗漏的东西。有人可以指出我正确的方向吗?这是简化的代码:(我按照ChristianRau的要求重写了错误的版本,所以你们可以理解我的错误)intmain(){//Delaringv