草庐IT

SDL_GL_SetAttribute

全部标签

c++ - 如何在 OGRE 中使用 SDL?

当我去使用OGRE与SDL(如thisarticle中所述),我似乎无法使用出现在主渲染窗口后面的第二个窗口。基本上,我使用的代码是这样的:SDL_init(SDL_INIT_VIDEO);SDL_Surface*screen=SDL_SetVideoMode(640,480,0,SDL_OPENGL);Ogre::Root*root=newOgre::Root();root->restoreConfig();root->initialise(false);Ogre::NameValuePairListwindowSettings;windowSettings["currentGLCo

c++ - SDL2 如何在第二台显示器上定位窗口?

我正在使用SDL_SetWindowPosition来定位我的窗口。我可以使用此功能将我的窗口定位在另一台显示器上吗?更新在Windows10中更改文本大小时,使用SDL_GetDisplayBounds将不会返回正确的监视器位置。有什么解决办法吗? 最佳答案 SDL2使用全局屏幕空间坐标系。每个显示设备在这个坐标空间内都有自己的边界。以下示例在第二个显示设备上放置一个窗口://enumeratedisplaysintdisplays=SDL_GetNumVideoDisplays();assert(displays>1);//as

c++ - SDL2 不接收窗口事件

我在带有Xcode的Macbook上使用SDL2已经有一段时间了,我很高兴。最近我试图接收一个焦点丢失事件,但它没有用。经过一些修补,我发现没有收到任何窗口事件,除了一个类型为512的窗口事件,它每秒以随机间隔出现2-5次。WindowEventID是一个枚举,而不是十六进制格式,所以它不应该是一些十六进制数。我在SDL2框架中搜索了512,但一无所获。其他事件,如SDL_QUIT和SDL_KEYDOWN工作正常。有人知道发生了什么事吗?这是我的事件循环:SDL_Eventevent;boolrunning=false;while(running){while(SDL_PollEven

c++ - 我可以用 std::chrono::high_resolution_clock 替换 SDL_GetTicks 吗?

检查来自C++的新内容,我找到了std::chrono库。我想知道std::chrono::high_resolution_clock是否可以很好地替代SDL_GetTicks? 最佳答案 使用std::chrono::high_resolution_clock的好处是避免在Uint32中存储时间点和持续时间。std::chrono库附带了各种各样的std::chrono::duration,您应该改用它们。这将使代码更具可读性,并减少歧义:Uint32t0=SDL_GetTicks();//...Uint32t1=SDL_GetT

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++ - SDL2 渲染到 QWidget

我希望将我在GTK2和SDL1.2中编写的模拟器移植到使用QT5和SDL2.0.3中。到目前为止,一切都很好,因为模拟器都可以独立地在SDL2中工作,而GUI在QT中也可以正常工作,并且它们都可以交互。我的问题是试图让SDL2出现在QWidget中。这在SDL1.2中使用窗口hack方法运行良好。根据我在网上阅读的所有内容,这可以通过SDL_CreateWindowFrom函数从QTWidget获取winId()并将其传递给它。然而,这似乎适用于您使用openGL的情况。我想知道的是当我只对纹理使用SDL2的标准绘图函数而不使用OpenGL时如何执行此操作。到目前为止,我的所有尝试都失

c++ - SDL2_ttf 是否无法呈现超过两个字节的字符?

我在我的程序中从SFML切换到SDL2,并且我开始使用SDL2_ttf以UTF-8格式呈现文本。我使用函数TTF_RenderUTF8_Solid。我注意到有些字符不再正确呈现。一个例子是'?'(U+1F70D)。我验证了该字体包含这些字符。我尝试使用包含在SDL2_ttf中的glfont示例程序,它也不会呈现这些字符。我查看了SDL2_ttf源代码,查看了SDL_ttf.c中的TTF_RenderUTF8_Solid函数,注意到这一行:Uint16c=UTF8_getch(&text,&textlen);,而UTF8_getch返回Uint32。因此较高的两个字节被丢弃(并且它们不会

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 的 Emscripten

我正在尝试开始使用emscripten,但我似乎找不到那么多关于它的信息。我关注了tutorial,并得到一个简单的helloworld工作。据我所知,正常的GL调用会自动转换为WebGL,但我想知道的是如何设置渲染目标、上下文以及所有没有code>SDL或GLUT或类似的任何内容。有没有办法在没有SDL\GLUT(包括鼠标/键盘输入等)的情况下在emscripten上使用WebGL?我在哪里可以获得有关emscripten的更多信息、示例等? 最佳答案 我建议您使用Cheerp-emscripten的替代品-Cheerp有一个有效

c++ - SDL 不渲染 truetype 字体

我不完全确定这是最好的地方,但我想不出更好的地方我“制作”了一个低分辨率font.(如果您知道它的实际来源,可加分)该字体在gedit中工作正常:但是,当尝试使用SDL_ttf渲染字体时,它主要工作,除了一些多字节unicode字符(特别是“æ”和“℃”),而其他非ASCII字符工作正常。但是(!),所有这些字符都可以与其他字体一起使用(我一直在使用DejaVuSans)其他字体工作正常的事实表明代码不应该受到指责,但以防万一:SDL_Surface*surf=TTF_RenderUTF8_Solid(this->font,(constchar*)text,col);if(surf==