

下記のコードでボタンを表示しようとしています。  
createを一度だけ実行し、その後の表示はdrawだけ呼べばいい、というようにしたいのですが、createも呼ばないと表示されません。どこで間違えているのでしょうか。

Button.h

[code]

    #pragma once
    
    #include <string>
    #include <functional>
    #include <SDL.h>
    #include <SDL_ttf.h>
    
    class Button
    {
    public:
        void create(
            SDL_Window *window, SDL_Renderer *renderer, 
            int x, int y, int w, int h, std::string text, TTF_Font *font, 
            SDL_Color bgColor, SDL_Color textColor)
        {
            mRenderer = renderer;
    
            bc = bgColor;
            mButtonRect = {x, y, w, h};    
    
            SDL_Surface *surface = SDL_GetWindowSurface(window);
            surface = TTF_RenderUTF8_Blended(font, text.c_str(), textColor);
            mTexture = SDL_CreateTextureFromSurface(mRenderer, surface);
    
            int iw, ih;
            SDL_QueryTexture(mTexture, NULL, NULL, &iw, &ih);
    
            mTextRect = {0, 0, iw, ih};
        }
        void Draw()
        {
            SDL_SetRenderDrawColor(mRenderer, bc.r, bc.g, bc.b, bc.a);
            SDL_RenderFillRect(mRenderer, &mButtonRect);
            SDL_RenderCopy(mRenderer, mTexture, &mTextRect, &mButtonRect);
        }
    
        void (*onClick)();
    
    private:
        SDL_Color bc;
        SDL_Renderer *mRenderer;
        SDL_Texture *mTexture;
        SDL_Rect mButtonRect;
        SDL_Rect mTextRect;
    };
    
[/code]


CC BY-SA 4.0
2023-05-24T05:20:20.203
94958
2023-05-24T05:20:20.203
57062
question
c++ gui sdl
SDL2でのボタン表示