การทำให้โมเดลหายไปใน SDL 1.2

ฉันจะลบโมเดลหรือเปลี่ยนพื้นหลังระหว่างกลางโปรแกรมได้อย่างไร ฉันพยายามหายไปด้วย SDL_FreeSurface( dot ); แต่ไม่ได้ผล ดังนั้นฉันจะลบโมเดลและโหลดโมเดลอื่นได้อย่างไร ฉันลองทำสิ่งนี้แต่ไม่ประสบความสำเร็จ

void clean_up()
{
    SDL_FreeSurface( model );
}

while( quit == false )
    {

        while( SDL_PollEvent( &event ) )
        {

            if( event.type == SDL_MOUSEBUTTONDOWN )
            {
                  clean_up();
            }
        }
    }

ฉันคิดว่า SDL_FreeSurfaceแค่ปล่อยโมเดลในหน่วยความจำที่ไม่อยู่ในหน้าจอ และเป็นยังไงบ้าง


person user2900714    schedule 30.03.2014    source แหล่งที่มา
comment
คุณจะต้องลบพื้นผิวออกจากตัวเรนเดอร์ของคุณ SDL_FreeSurface จะเผยแพร่ทรัพยากรสำหรับ SDL_Surface เท่านั้น แต่พื้นผิวยังคงใช้งานได้ บางทีคุณอาจโพสต์โค้ดการเรนเดอร์ของคุณได้?   -  person Hjorthenify    schedule 30.03.2014
comment
SDL1.2 ไม่มีประเภทพื้นผิว ขึ้นอยู่กับว่าคุณแสดงพื้นผิวของคุณอย่างไร   -  person this    schedule 31.03.2014


คำตอบ (1)


SDL1.2 ล้าสมัยแล้ว โปรดใช้ SDL2 ยังไงซะสำหรับการแก้ปัญหา

หลังจากที่คุณปล่อยพื้นผิวในฟังก์ชันแล้ว ให้เพิ่ม model = NULL; และลบพื้นผิวทุกๆ while วนรอบโดยเพิ่ม SDL_Flip(model) ที่ส่วนท้ายของลูป while ของคุณ สิ่งนี้จะทำให้ตัวชี้ของคุณชี้ไปที่ไม่มีอะไรซึ่งจะไม่แสดงอะไรเลย (หรือที่รู้จักว่าหายไป) แต่ หากคุณกำลังพูดถึงการหายไปอย่างแท้จริง คุณสามารถลดอัลฟ่าลง 1 (หรืออะไรก็ตามที่เป็นแจ๊สของคุณ) ใน for ลูปซึ่งจะทำให้มันจางหายไปเหมือนกำลังหายไป

person saloomi2012    schedule 31.03.2014