jjzjj

c++ - OpenGL:未定义 VBO 函数

我正在尝试使用OpenGLVBO,但是与其使用相关的函数,glGenBuffersARB()例如,都是未定义的。立即模式功能当然可以,只有这些。我正在使用VS2010,带有SFML图书馆。该库中的包含header之一包括和,可执行文件链接到glu32.lib和opengl32.lib为什么只缺少这些功能,我如何才能包括它们的使用? 最佳答案 GLEW将定义它们,其他GL扩展库也是如此。可在此处找到信息:http://www.opengl.org/resources/features/OGLextensions/Usinganexte

c++ - 提高 OpenGL 中的 VBO 性能

所以我目前正在尝试以合适的速度渲染复杂的模型,但遇到了一些麻烦;渲染单个模型会导致我的帧率变得紧张,而程序中没有任何额外的工作。我的模型(场景中只有一个)似乎太大了。我上传到缓冲区的顶点数组中有444384个float(因此模型中有24688个三角形)。//CreatevertexbuffersglGenBuffers(1,&m_Buffer);glBindBuffer(GL_ARRAY_BUFFER,m_Buffer);intSizeInBytes=m_ArraySize*6*sizeof(float);glBufferData(GL_ARRAY_BUFFER,SizeInBytes

c++ - glDrawElements 使用了错误的 VBO?

我正在尝试在屏幕上渲染两个不同的对象。据我所知,问题是OpenGL使用了错误的顶点缓冲区,但使用了正确的索引缓冲区,但我不太确定我目前正在做的任何事情,因为我已经开始重新学习OpenGL。这是当前显示的内容:http://puu.sh/ekhd7/cca60981ab.jpg如果为对象设置类是个坏主意,或者应该如何完成,请告诉我-我什么都不做。structpoint4{vec4vertex;vec4color;};classPyramid{public://VariablesandContructorherevoidinit(){glGenBuffers(1,&Arraybufferx

c++ - 如何优化 VBO/IBO 以最大化 GPU 缓存使用

我正在使用在CUDA上运行的MarchingCubes算法从体积数据生成网格。我尝试过保存网格并以3种方式渲染它。将一组粗略的三角形保存为连续的顶点数据数组。如果第一次通过,我估计大小,创建一个OpenGLVBO,将其映射到CUDA并按照以下格式将顶点数据写入其中V0x,V0y,V0z,N0x,N0y,N0z,V1x,V1y,V1z,N1x,N1y,N1z,...并使用glDrawArrays()绘制它。RedundantVerticesinVBO,RedundantVerticesperCube,NoIndices.从步骤1中获取网格,使用thrust::sort()和thrust:

c++ - 学习正确使用 VBO

所以我一直在尝试自学使用VBO,以提高我的OpenGL项目的性能并学习比固定功能渲染更高级的东西。但是我还没有找到很多像样的教程。到目前为止我发现的最好的是Songho'stutorials和OpenGL.org的东西,但我似乎缺少某种背景知识来完全理解正在发生的事情,虽然我不能确切地说出我没有得到的是什么,但请保存一些参数的用法。无论如何,我一直在努力,并提出了一些至少不会崩溃的蚕食代码,但它会导致奇怪的结果。我要渲染的是这个(使用固定功能渲染;它应该是棕色和背景灰色,但我所有的OpenGL屏幕截图似乎都采用洋红色作为他们最喜欢的颜色;可能是因为我使用SFML作为窗口?)。不过,我得

c++ - C++ 中的 OpenGl VBO 技术

对于在OpenGL程序中正确使用VBO,我有点困惑。我想创建一个地形分页算法,使用从4096x4096灰度高度图调用的map作为“整体”map。据我所知,存储在VBO中的每个顶点将占用64个字节。我遇到的问题是,大多数来源都指出单个VBO的大小应在1-4mb之间,VBO越少越好。然而根据我的计算,存储每个顶点总共需要大约1GB的数据!(4096x4096x64)这不包括每个顶点可能需要为每个三角形存储多次。一旦我完成了代码的地形部分,这也无法容纳这张map上的不同车辆和人员。我看到的另一个解决方案是在程序运行时从硬盘驱动器中分页数据,但是另一个消息来源说在程序运行时创建和销毁是一个坏主

c++ - 为 OpenGL 的顶点缓冲区对象动态打包数据

我正在尝试为OOP中的VBO编写一个包装器,它由addVertex、addNormal..addX、flush()和render()函数组成。起初,我将顶点、法线、索引保存在单独的vector中,例如:std::vectorvertexBuffer;std::vectorcolorBuffer;std::vectornormalBuffer;std::vectortexCoordBuffer;std::vectorindexBuffer;但正如我在某处读到的那样,为每个VBOID保留不同的VBOID是完全低效的,因此最好按VertexNormalTexCoordColor-VNTC-V

c++ - OpenGL - VAO、VBO、IBO、glDrawElements 不显示

我无法让关卡数据显示在屏幕上。我的着色器正在使用正确渲染立方体但不是关卡。这是我的VBO、VAO和IBO的设置:voidZoneMesh::buildData(){//CreatetheVBOforthismeshglGenBuffers(1,&vbo);glBindBuffer(GL_ARRAY_BUFFER,vbo);glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);//CreatetheIBOglGenBuffers(1,&ibo);glBindBuffer(GL_ELEMENT_ARRA

c++ - 对 VBO 中的特定三角形使用不同的纹理

我有9个由三角形组成的四边形,如下所示:我正在使用VBO来存储关于它们的数据-它们的位置和纹理坐标。我的问题是-是否可以通过仅使用一个VBO和shader使四边形5具有与其余四边形不同的纹理?:绿色代表纹理1,黄色代表纹理2。到目前为止我得到了:GLfloatvertices[]={//Positions0.0f,0.0f,...//Texturecoordinates0.0f,0.0f,...};我正在使用vertices[]数组创建VBO,然后绑定(bind)我的第一个纹理m_texture1(我也可以访问第二个-m_texture2)并调用着色器:glBindTexture(GL

c++ - 使用 OpenGL 的 VBO 的问题

我刚刚尝试使用VBO渲染第一个红皮书示例(白色Quad)。它适用于即时模式和顶点数组。但是当使用VBO时,屏幕保持黑色。我想我一定错过了一些重要的事情。初始化:unsignedintbufIds[2];glGenBuffers(2,bufIds);GLfloatvertices[]={0.25,0.25,0.0,0.75,0.25,0.0,0.75,0.75,0.0,0.25,0.75,0.0};glBindBuffer(GL_ARRAY_BUFFER,bufIds[0]);glBufferData(GL_ARRAY_BUFFER,12,vertices,GL_STATIC_DRAW)