从另一个类绘制SDL_Surface

时间:2017-02-21 11:38:45

标签: c++ sdl-2 surface

所以我有三个类Application,DrawMgr和Cube。在Application.cpp中是我的主循环,我在其中调用DrawMgr :: DrawCube,我在其中调用Cube :: Draw。

Application.cpp

SDL_Surface* screenSurface;

void DrawMgr::DrawCube()
{
   gCube.Draw(screenSurface);
}

DrawMgr.cpp

void Cube::Draw( SDL_Surface* destination )
{
    SDL_Rect offset;
    offset.x = 100;
    offset.y = 100;

    SDL_FillRect(cube, NULL, SDL_MapRGB( cube->format, 0, 0, 0 ) );

    SDL_BlitSurface( cube, NULL, destination, &offset);
}

Cube.cpp

#include<stdio.h>
int calculate(int temp)
{
    int flag = 0,i = 2,tmp = 0;
    for(i = 2;i < temp;i++)
    {
        if(temp % i == 0)
        {
            return 1;
        }
    }
}
int main()
{
    long int i = 2,j,count = 0,n = 600851475143,flag = 0,prime = 0;
    long int check;
    while(i < n)
    {
        if(n % i == 0)
        {
            check = calculate(i);
            if(check != 1)
            {
                prime = i;
                printf(" Prime  number is : %ld \n", prime);
            }
        }
        i++;
    }
    printf(" Max prime number of %ld is : %ld \n",n,prime);
    return 0;
}

当我运行程序时,立方体不会出现,我做错了什么?

1 个答案:

答案 0 :(得分:0)

您确定要使用SDL2.0吗?因为事情已经改变,你需要一个SDL_Renderer和一个SDL_Texture。好像你正试图以SDL 1方式做到这一点。

在SDL2中,为了更新屏幕,我们使用这些调用

  

SDL_RenderClear(sdlRenderer);

     

SDL_RenderCopy(sdlRenderer,sdlTexture,NULL,NULL);

     

SDL_RenderPresent(sdlRenderer);

RenderClear擦除屏幕内容。 RenderCopy在其上绘制一些纹理。 RenderPresent在屏幕上绘制最终结果。

有关新流程的更多详细信息,请参阅迁移指南。

https://wiki.libsdl.org/MigrationGuide