C ++ SDL2:如何将矩形渲染到多个视口中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++ SDL2:如何将矩形渲染到多个视口中相关的知识,希望对你有一定的参考价值。

我是SDL2(2.0.10版)的新手,我从Lazy Foo教程中教它。在Lesson of The ViewPort示例代码中,仅在左视口中渲染第一张图像,而在其他视口中则不渲染。在不同视口中的矩形渲染也不起作用。我想要在不同视口中渲染rect时,我做错了什么:

while( !quit )

while( SDL_PollEvent( &e ) != 0 )
if( e.type == SDL_QUIT )
 quit = true;



//Clear screen
SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF );
SDL_RenderClear( gRenderer );

//Top left corner viewport
SDL_Rect topLeftViewport;
topLeftViewport.x = 0;
topLeftViewport.y = 0;
topLeftViewport.w = SCREEN_WIDTH / 2;
topLeftViewport.h = SCREEN_HEIGHT / 2;
SDL_RenderSetViewport( gRenderer, &topLeftViewport );

SDL_Rect fillRect =  10, 10, 100, 100 ;
SDL_SetRenderDrawColor( gRenderer, 0xFF, 0x00, 0x00, 0xFF );
SDL_RenderFillRect( gRenderer, &fillRect );

SDL_Rect topRightViewport;
topRightViewport.x = SCREEN_WIDTH / 2;
topRightViewport.y = 0;
topRightViewport.w = SCREEN_WIDTH / 2;
topRightViewport.h = SCREEN_HEIGHT / 2;
SDL_RenderSetViewport( gRenderer, &topRightViewport );

SDL_Rect fillRect2 =  10, 10, 100, 100 ;
SDL_SetRenderDrawColor( gRenderer, 0x00, 0xFF, 0x00, 0xFF );
SDL_RenderFillRect( gRenderer, &fillRect2 );

SDL_RenderPresent( gRenderer );

答案

正如我所看到的,您在100x100的10、10处绘制了一个矩形两次,此坐标未考虑视口坐标。在某种程度上,如果您想通过更改视口裁剪来实现此目的不相关,只需在所需的位置绘制正方形即可。

以上是关于C ++ SDL2:如何将矩形渲染到多个视口中的主要内容,如果未能解决你的问题,请参考以下文章

用 SDL2 处理精灵图

如何在 SDL2 中旋转矩形?

SDL 改变视口的渲染大小,独立于窗口

SDL2纹理渲染

SDL2:如何在不清除屏幕的情况下进行渲染

如何使 OpenGL 视口具有渲染到其中的 QML 项目的确切大小和位置?