草庐IT

SDL_GL_SwapBuffers

全部标签

c++ - SDL 表面像素格式转换

我想将由IMG_Load()加载的SDL_Surface转换为OpenGL纹理的其他像素格式(rgba8)。我怎样才能做到这一点?我在文档中读到了有关SDL_ConvertSurface()的信息,但我不知道如何将它组合在一起。 最佳答案 给"HowToLoadanOpenGLTexturefromanSDL_Surface"一个镜头:GLuinttexture;//ThisisahandletoourtextureobjectSDL_Surface*surface;//Thissurfacewilltellusthedetails

c++ - SDL TextInput(使用新的 1.3 结构)

好的,我一直在研究SDL中的文本输入(如何将击键数据转换为字母并将它们附加到名为Text的std::string中)并且大多数教程都是这样介绍的://Ifakeywaspressedif(event->type==SDL_KEYDOWN){//Ifthekeyisalowercaseletterelseif((event->key.keysym.unicode>=(Uint16)'a')&&(event->key.keysym.unicodekey.keysym.unicode;}}然而,经过一番搜索后,我在SDLheader中发现了一条注释,说明.unicode已弃用并使用SDL_T

c++ - SDL 退出全屏

当我退出全屏SDL应用程序时,我的计算机分辨率更改为640x480。我的应用程序分辨率是1024x768。如何在退出应用程序后将分辨率切换回原来的分辨率?我使用SDL1.2和Ubuntu10.04 最佳答案 这听起来像是X驱动程序问题或窗口管理器问题。您可以在不同的发行版或不同的ubuntu版本上尝试吗?除非您的程序崩溃,否则您应该调用SDL_Quit(),或SDL_QuitSubSystem(SDL_INIT_VIDEO),或者直接退出全屏。那应该恢复原始设置。 关于c++-SDL退出

c++ - SDL——跨平台开发

我打算在接下来的几个月里参加一个小型游戏比赛。他们要求提交的内容能够在Linux上编译(并且在为比赛运行/评估之前将会编译)。我将使用SDL和C++。我以前只在Windows上开发过,我已经非常习惯VisualStudio提供的好处。我希望能够使用VS在Windows中进行开发,然后在接近尾声的过程中将其迁移到Linux。除了确保SDL已安装在Linux机器上之外,我在整个开发过程中是否可以做一些事情来简化流程?此外,所有这些状态的竞赛规则:它还必须在开放平台上运行(我们强烈建议确保您的程序在现代风格的GNU/Linux上运行,因为所有评委都可以访问它)。我假设在Ubuntu中编译/运

c++ - 使用 SDL_ttf 和 OpenGL,TTF_RenderUTF8_Blended 打印红色矩形

当我使用TTF_RenderUTF8_Blended呈现我的文本时,我在屏幕上获得了一个实心矩形。颜色取决于我选择的那个,在我的例子中,矩形是红色的。我的问题我错过了什么?似乎我没有从使用SDL_DisplayFormatAlpha(TTF_RenderUTF8_Blended(...))生成的表面获得正确的Alpha值,还是我?有人认识或知道这个问题吗?附加信息如果我使用TTF_RenderUTF8_Solid或TTF_RenderUTF8_Shaded,文本会正确绘制,但当然不会混合。我还在屏幕上绘制其他纹理,所以我最后绘制文本以确保混合会考虑到当前表面。编辑:SDL_Colorg

c++ - SDL_RenderCopy() 在 Raspberry PI 上有奇怪的行为

这让我很难过..我有一个非常简单的SDL2程序。它有一个包含3个SDL_Texture指针的数组。这些纹理填充如下:SDL_Texture*myarray[15];SDL_Surface*surface;for(inti=0;i这有效,没有错误。在主循环中(这只是一个标准的事件循环,等待SDL_QUIT、击键和SDL_Timer每秒放入事件队列的用户事件)我只是这样做(对于定时器触发的事件):idx=(idx+1)%3;//idxisglobalvarinitially0.SDL_RenderClear(myrenderer);SDL_RenderCopy(myrenderer,mya

c++ - SDL_Keycodes 太大而无法存储

在SDL2中搜索一次检测多个键的方法时,我遇到了SDL1.x的这段代码://author:RobLoach//Globalkeybufferboolkeys[256];while(SDL_PollEvent(&mainEvent)){if(mainEvent.type==SDL_KEYDOWN){keys[mainEvent.key.keysym.sym]=true;}elseif(mainEvent.type==SDL_KEYUP){keys[mainEvent.key.keysym.sym]=false;}}我尝试在SDL2和std::array中实现它,但我有Segmentati

c++ - OpenGL:计算着色器 - gl_GlobalInvocationID 提供静态输出

所以我有一个计算着色器,它应该获取一个纹理并将其复制到另一个纹理并稍作修改。我已经确认纹理已绑定(bind),并且可以使用图形调试工具RenderDoc写入数据。我遇到的问题是,在着色器内部,由OpenGL创建的变量gl_GlobalInvocationID似乎无法正常工作。这是我对计算着色器的调用:(纹理高度为480)glDispatchCompute(1,this->m_texture_height,1);//CalluponshaderglMemoryBarrier(GL_SHADER_IMAGE_ACCESS_BARRIER_BIT);然后我们在这里有我的计算着色器:#vers

c++ - 使用/GL 时向后兼容性中断

为了构建适用于ARM64设备的应用程序,我们将VS201715.5.7升级到15.9.6版本。发布之后,使用/GL标志构建的库(15.9.6)现在在测试应用程序(基于15.5.7构建)使用时抛出“无法识别的标志”错误,如下所示:1>LINK:fatalerrorC1007:unrecognizedflag'-Ot'in'p2'1>LINK:fatalerrorLNK1257:codegenerationfailed一旦在项目设置中禁用“全程序优化(/GL)”,客户端构建就会通过。谁能检查从15.5.7版本到现在抛出这个链接错误有什么变化?还有什么是最佳优化的建议项目设置。

c++ - 强制 GLUtesselator 只生成 GL_TRIANGLES?

如果我只想使用一种顶点数组格式,则很难呈现我生成的数据。我尝试提供GLU_TESS_EDGE_FLAG_DATA回调,但它使我的程序崩溃。(也试过最后没有“_DATA”,效果相同)。如何让它只生成GL_TRIANGLES? 最佳答案 gluTessCallback(),GLU_TESS_EDGE_FLAG:...ifanon-NULLedgeflagcallbackisprovided...fansandstripsareconvertedtoindependenttriangles.这是我一直在使用的:structTessCont