草庐IT

SDL_GL_SetAttribute

全部标签

c++ - opengl 3D 编程中的 SDL 与 GLUT

我正在开始一系列关于SDL的教程。在深入挖掘之前,我想知道SDL为我提供了哪些类型的控制来应对GLUT?此外,是否支持网络摄像头访问(用于面部跟踪或运动检测),或者最好通过OpenCV进行管理? 最佳答案 SDL和GLUT都没有任何网络摄像头功能。它们完全与网络摄像头无关。关于您的其他问题:GLUT未得到维护。十多年来,它没有看到任何更新。它已被FreeGLUT(二进制兼容的替代品)部分取代,但GLUT和FreeGLUT都不支持OpenGL3.0+。它们也不具备声音支持等功能。SDL和许多其他库(如GLFW、SFML等)支持较新版本

c++ - 我应该什么时候设置 GL_TEXTURE_MIN_FILTER 和 GL_TEXTURE_MAG_FILTER?

根据定义,GL_TEXTURE_MIN_FILTER在被纹理化的像素映射到大于一个纹理元素的区域时使用。假设我有一个分辨率为1024*768的纹理,我想将它映射到一个矩形。投影矩阵使用以下方法设置:glOrtho(0,1024,0,768,0,1);矩形设置为:glTexCoord2f(0.0f,0.0f);glVertex3f(0.0f,0.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(1024.0f,0.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(1024.0f,768.0f,0.0f);glTe

c++ - #error gl.h 包含在 glew.h 之前

所以我试图将我的OpenGL代码从Main()移到一个特定的类中,该类仅在必要时处理3D图形。以前,我的main.cpp文件的顶部如下所示:#defineGLEW_STATIC#include#include#include#include#include#include"Game.h"这很有效。我试图做的是将所有与OpenGL相关的代码移动到Game的方法中。类(class)。所以我删除了#defineGLEW_STATIC和#include从上面,并将它们放入Game.h,这样Game.h的顶部现在看起来像这样:#defineGLEW_STATIC#include#include#

c++ - SDL 窗口不显示

这是我的代码:#include#includeintmain(intargc,constchar*argv[]){SDL_Init(SDL_INIT_VIDEO);SDL_Window*_window;_window=SDL_CreateWindow("GameEngine",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,700,500,SDL_WINDOW_RESIZABLE);SDL_Delay(20000);SDL_DestroyWindow(_window);SDL_Quit();return0;}我在Xcode中工作。我已经下载了

c++ - GL_DRAW/READ_FRAMEBUFFER 与 GL_FRAMEBUFFER?

我注意到现在有GL_DRAW/READ_FRAMEBUFFER扩展。目前我只是在使用GL_FRAMEBUFFER和glTextureBarrierNV。但是,我没有发现太多关于READ/WRITE扩展的信息,因此有一些问题。他们引入了什么OpenGL版本?与简单地使用GL_FRAMEBUFFER进行读写相比,它们有什么优势?我在哪里可以找到有关此的更多信息? 最佳答案 学究笔记:GL_DRAW/READ_FRAMEBUFFER未在扩展中引入;它们是OpenGL3.0的核心功能。是的,从技术上讲,此功能也在ARB_framebuffe

c++ - 16 位 float 和 GL_HALF_FLOAT

我正在寻找/编写16位float的C++实现,以与OpenGL顶点缓冲区(纹理坐标、法线等)一起使用。到目前为止,这是我的要求:必须是16位(显然)。必须能够使用GL_HALF_FLOAT上传到OpenGL顶点缓冲区。必须能够表示超出-1.0-+1.0的数字(否则我只会使用标准化的GL_SHORT)。必须能够与普通32位float相互转换。算术运算无关紧要-我只关心存储。速度不是主要问题,正确性才是。这是我到目前为止的界面:classhalf{public:half(void):data(0){}half(consthalf&h):data(h.data){}half(constuns

c++ - 如何缩放到 SDL 中的分辨率?

我正在使用SDL和C++编写2D平台游戏。但是,我遇到了一个涉及缩放到分辨率的大问题。我希望游戏在全高清下看起来不错,所以游戏的所有图像都已创建,因此游戏的自然分辨率为1920x1080。但是,如果有人使用较小的分辨率,我希望游戏缩小到正确的分辨率,或者如果有人使用较大的分辨率,则游戏可以放大。问题是我一直没能找到一种有效的方法来做到这一点。我开始使用SDL_gfx库来预缩放所有图像,但这不起作用,因为它会产生很多偏移-一个错误,其中一个像素丢失。由于我的动画包含在一个图像中,因此当动画播放时,动画会在每一帧上略微向上或向下移动。然后经过一番观察后,我尝试使用opengl来处理缩放。目

c++ - 在Win10上用VS2015编译的C++ SDL2程序调试加载时间错误

我正在使用VisualStudio2015在64位Windows10上使用SDL2在C++中编写一个项目。我最近购买了一台新的Windows10笔记本电脑并从github克隆了我的项目。我的项目编译正确,但在运行时出现以下错误:Theapplicationwasunabletostartcorrectly(0xc000007b).ClickOKtoclosetheapplication.根据我目前的研究,这个错误通常是由加载不兼容的DLL引起的,例如64位版本而不是32位版本。到目前为止我发现的建议包括:检查我使用的是32位版本的SDL2DLL安装/重新安装适用于VisualStudi

c++ - SDL2 C++ 截图

您好,我想知道是否可以使用SDL2简单地截取屏幕截图。我尝试了SDL_GetWindowSurface但我收到一条错误消息:Nohardwareacceleratedrenderersavailable.我从here中获取了代码.我想到的另一个解决方案是将纹理转换为表面,但我没能做到...有什么解决办法吗? 最佳答案 您似乎在混合渲染系统。该方法仅适用于软件渲染的上下文。对于硬件渲染,您应该使用方法SDL_RenderReadPixels()。要保存屏幕截图,您需要这样的代码:SDL_Surface*sshot=SDL_Create

c++ - 拖动时保持窗口事件(Win32 上的 SDL)

首先,我的代码设置了SDL环境,并继续更新OpenGL上下文,而没有执行任何SDL_Event处理。这会导致窗口,只要它是打开的,在Windows看来是没有响应的。窗口闪烁了一下。标题栏会附加“(NotResponding)”,在窗口内单击时它会变灰,因为Windows默认在非响应窗口上执行此操作。然而,在这种状态下(即使在它变灰时和之后),OpenGL显示继续更新和动画,这就是踢球者,它甚至在拖动窗口时这样做。很明显,在这种情况下,应用程序没有正确处理来自Windows的事件,导致Windows认为它​​处于挂起状态。但是有明确的证据表明opengl继续呈现。现在我对代码进行了一次修