图像在 SDL 2.0 中不显示

Image doesn't show in SDL 2.0

本文关键字:显示 SDL 图像      更新时间:2023-10-16

我正在使用SDL 2.0编写OpenGl游戏。现在我有一个问题。我将在屏幕上画一个图像。现在我创建窗口并初始化一切。图像加载没有错误,但不显示在屏幕上。下面是一些代码示例。所有这些代码都需要绘制位图。没有显示其他代码。我用这个代码看到一个黑窗口。没有图像:(。(将代码更新为main和函数)

 void Bitmap(const tstring& nameRef, int xPos, int yPos, int width, int height)
{
SDL_Surface* image;
     SDL_Rect rect;
    rect.x = xPos;
    rect.y = yPos;
    rect.h = height;
    rect.w = width;
    image = SDL_LoadBMP(("./GameData/Bitmap/" + m_FileName).c_str());
    SDL_BlitSurface(image , NULL , SDL_GetWindowSurface(GAME_ENGINE->GetMainWindow()) , &rect);
}

int main(int argc, char** argv)
{
SDL_Window * m_MainWindowPtr =nullpr;
//Initialize SDL
    if(SDL_Init(SDL_INIT_EVERYTHING) < 0)
    {
        return false;
    }
    //Create Window
    if(m_Fullscreen == false)
    {
        m_MainWindowPtr = SDL_CreateWindow(m_WindowName.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, m_ScreenWidth, m_ScreenHeight, SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
    }
    else if(m_Fullscreen == true)
    {
        m_MainWindowPtr = SDL_CreateWindow(m_WindowName.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, m_ScreenWidth, m_ScreenHeight, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
    }
    //check if the window is made, else quit the game
    if(m_MainWindowPtr == nullptr)
    {
        return false;
    }
    //Enable unicode
    //SDL_EnableUNICODE( SDL_TRUE );
    // NEEDED TO DRAW OPENGL 
    SDL_GLContext glcontext = SDL_GL_CreateContext(m_MainWindowPtr); 
    //LIKE THE OLD SWAP BUUFERS FUNCTION 
    SDL_GL_SwapWindow(m_MainWindowPtr); 

Bitmap("test.bmp", 500, 500, 247, 360);
}

sdl_updat竖立?

你是否正确设置了OPEN_GL?视窗?

如果你打算使用opengl进行渲染,我看不到任何opengl代码。

试试这里的例子,告诉我们它是如何进行的?

http://wiki.libsdl.org/moin.fcg/SDL_GL_CreateContext

尝试SDL_RenderPresent(取代SDL_Flip和SDL_UpdateRects在SDL 2.0)或OpenGL解决方案,添加张贴。