草庐IT

hello-gl

全部标签

c++ - 为什么 GL_LEQUAL 推荐用于 GL 深度函数(为什么它对我不起作用)?

关于GLwiki他们建议使用GL_LEQUAL作为深度函数。此外,深度函数默认为GL_LESS。当我使用这些功能中的任何一个时,我都会得到奇怪的结果。在这张图片中,红色方block应该在蓝色方block的前面(两个方block的大小相同):但是,如果我使用glClearDepth(0.0)然后使用glDepthFunc(GL_GREATER),运行其他未更改的程序,我得到这个:仔细考虑一下,GL_LESS会给出它所做的结果是有道理的:如果传入的深度值小于存储的深度值,则写入片段。如果我将相机定位在(1,0,0)并朝(0,0,0)方向看,我希望在(0.5,0,0)位于(0,0,0)处的对

c++ - IBO 比 GL_TRIANGLE_STRIP 还差?

出于学习目的,我决定使用3种方法绘制球体显示列表VoaVbo(GL_TRIANGLE_STRIPE)VaoVbo和Ibo(GL_TRIANGLES)我听说使用ibo可以使程序运行得更快,但这是真的吗?对于100个切片和100个堆栈的球体,第二种方法产生40400个顶点,而第三种方法“仅”产生19802个顶点。通过这样做,我保存了20598个顶点,每个32字节=659136字节。verticesSize=(slices*4)*(stacks+1);IBOverticesSize=(slices*2)*(stacks-1)+2;但是我需要制作索引数组,在这种情况下大小为118800(创建所

c++ - SDL_GL_SwapBuffers() 间歇性变慢

我正在开发一款sdl/opengl游戏,只是为了好玩。我平均得到了一个不错的fps,但是运动真的很不稳定,因为SDL_GL_SwapBuffers()会随机地花费大量的时间来处理。加载纹理并将其写入缓冲区有时会花费超过100毫秒!我删掉了很多代码,试图弄清楚这是否是我做错了什么,但我运气不佳。当我运行这个基本程序时,它有时仍会阻塞长达70毫秒。主要内容://Don'tforgettolinktoopengl32,glu32,SDL_image.lib//includes#include//SDL#include#include//Video#include"videoengine.h"

c++ valgrind在hello world中显示内存泄漏

这个问题在这里已经有了答案:PRE-2016Valgrind:Memorystillreachablewithtrivialprogramusing(3个答案)关闭4年前。我的程序代码是#includeintmain(intargc,constchar*argv[]){std::cout我是用flags编译的-Wpedantic-pedantic-errors-std=c++11-g-Wall-Wextra在上面运行Valgrind,看到一些奇怪的东西,这个简单的程序有内存泄漏,valgrind--leak-check=full--show-leak-kinds=all命令的输出是==

c++ - OpenGL GL_POLYGON_SMOOTH 二维抗锯齿从四边形创建三边形

更新:我在安装NVIDIAControlPanel时找到了它,如果我卸载它它会正常工作。当您在OpenGL中旋转四边形时,边缘会变得参差不齐。如果我调用glEnable(GL_POLYGON_SMOOTH),边缘会变得平滑,但OpenGL然后会在我的所有图像中绘制一条白色对角线,就好像它正在创建我的四边形的三元组一样。它是这样的:有没有办法禁用那条线,或者我可以用另一种简单的方法获得抗锯齿功能吗?我尝试了GL_MULTISAMPLE,但没有任何反应。在我的代码中还有:glShadeModel(GL_SMOOTH);glMatrixMode(GL_PROJECTION);glLoadId

c++ - 使用 GL_TRIANGLE_STRIP 或索引 GL_TRIANGLES 绘制动态数量的四边形是否更有效

我正在使用C++开发一个基于sprite的简单2D游戏,该游戏使用OpenGL进行硬件加速渲染,并使用SDL进行窗口管理和用户输入处理。由于它是一款2D游戏,我只需要绘制四边形,但由于Sprite的数量是动态的,我永远不能依赖于四边形的数量是恒定的。因此,我需要在每一帧通过我的VBO重新缓冲所有顶点数据(因为四边形可能比上一帧多或少,因此缓冲区的大小可能不同)。到目前为止,我的原型(prototype)程序会创建一个窗口,并允许用户使用向上和向下箭头键在对角线行中添加和删除四边形。现在我画的四边形是简单的、没有纹理的白色方block。这是我正在使用的代码(在OSX10.6.8和Ubun

c++ - OpenGL:并非所有卡都支持 GL_LINE SMOOTH;甚至不会画线,除非

首先,这段代码的目的是什么?glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);我可以放在那里GL_DONT_CARE但它不会让我画线,除非我使用glDisable(GL_LINE_SMOOTH)所以我问是否有一些内置机制可以使它绘制线条,即使不支持平滑线条(所以它会在没有抗锯齿的情况下绘制它们......)或者我必须为它创建自己的函数并检查是否支持平滑线等...每次我想绘制平滑线时,我都需要调用这个函数来检查它是否被支持?啊。编辑:线条在我的另一张卡上是平滑的,在我的另一张卡上它们甚至没有出现,除非我禁用平滑线。所以这就是问题所在,而不是glEnable(GL

c++ - 使用 GLM 正确旋转 Open GL 相机

我有一个相机类,它是这样初始化的:CameraFP::CameraFP(){this->aspect_ratio=800.0f/600.0f;this->fov=45.0f;this->near_plane=0.1f;this->far_plane=1000.0f;this->position=glm::vec3(0,0,0);this->target=position+glm::vec3(0,0,-1);this->up=glm::vec3(0,1,0);this->m_rotation=glm::mat4(1.0);m_view=glm::lookAt(position,targe

将gl_float和gl_unsigned_int传递到一个大步

我想知道,我有以下设置:glEnableVertexAttribArray(VERTEX_COORD_ATTRIB);glEnableVertexAttribArray(TEXTURE_COORD_ATTRIB);glEnableVertexAttribArray(COLOR_ATTRIB);glEnableVertexAttribArray(TEXNUM_ATTRIB);glVertexAttribPointer(VERTEX_COORD_ATTRIB,3,GL_FLOAT,GL_FALSE,StrideSize,(void*)0);glVertexAttribPointer(TEXTURE

c++ - OpenCL Hello World

我刚刚开始在opencl中工作,目前正在opencl中开发一个相对基本的hello_world程序。不幸的是,该程序没有输出正确的短语或任何东西,而是挂起而没有输出。知道为什么会这样吗?下面是:openglsource.cpp和hello.cl#defineCL_USE_DEPRECATED_OPENCL_2_0_APIS#include#include#includeintmain(){std::vectorplatforms;cl::Platform::get(&platforms);autoplatform=platforms.front();std::vectordevices