可以在一个窗口/应用程序中使用带有Opengl的SDL blitting(SDL_ANYFORMAT)

时间:2013-08-06 20:46:43

标签: opengl sdl

如果可以,我将如何去做,可以共享链接或代码片段

我尝试过使用SDL_ANYFORMAT并使用此

RenderSurface ( 0, 0, pTexture, pMainSurface );

glColor3f ( 1.0f, 0.0f, 0.5f );

glBegin( GL_QUADS );
     glVertex2f( -0.5f, -0.5f );
     glVertex2f(  0.5f, -0.5f );
     glVertex2f(  0.5f,  0.5f );
     glVertex2f( -0.5f,  0.5f );
glEnd();

SDL_Flip ( pMainSurface );

RenderSurface是我做的一个函数,就是这个

void RenderSurface ( int x, int y, SDL_Surface* src, SDL_Surface* dst )
{
SDL_Rect offset;

offset.x = x;
offset.y = y;

SDL_BlitSurface ( src, NULL, dst, &offset );
}

此代码仅显示Surface而不是OpenGL的四边形

我想要的唯一原因是因为我现在比使用Opengl纹理映射系统更适合使用blitting系统

所以任何类型的papar或教程都会很棒

1 个答案:

答案 0 :(得分:0)

使用SDL,您可以让SDL为您处理(使用SDL的blitting)或使用OpenGL自行处理。

如果您遇到OpenGL问题,我建议您坚持使用SDL。除非你的最终目标是制作3D节目。在这种情况下,我会建议http://lazyfoo.net/获取有关OpenGL的教程。它从不推荐使用的功能开始(用于学习不使用)并逐步实现可编程管道。

在SDL2中,您可以告诉它使用硬件加速(在引擎盖下它基本上是OpenGL):https://gist.github.com/armornick/3434362(一个简单的HOWTO)

我认为这或多或少是你想要的。