C 呈现SDL2函数

C 呈现SDL2函数,c,sdl-2,C,Sdl 2,您好,我在渲染我的角色时遇到问题,我想我传递函数的参数是错误的,因为调试器告诉我图像的高度是1854382513251:D 但我不知道我做了什么坏事。如果smb能帮助我,那就太好了。 这是我的密码 Wydruk_postaci(&P1, &NPCprzod, &NPCtyl, &NPCbok, &Renderer, &klatki); void Wydruk_postaci(Postac *P,sTekstura *Prz

您好,我在渲染我的角色时遇到问题,我想我传递函数的参数是错误的,因为调试器告诉我图像的高度是1854382513251:D 但我不知道我做了什么坏事。如果smb能帮助我,那就太好了。 这是我的密码

Wydruk_postaci(&P1, &NPCprzod, &NPCtyl, &NPCbok, &Renderer, &klatki);

            void Wydruk_postaci(Postac *P,sTekstura *Przod[2],sTekstura *Tyl[2],sTekstura *Bok[2],SDL_Renderer **Renderer,int *frame)
        {
            char position = 'F';
            if ((*P).predkoscx > 0)
            {
                render((*P).pozycjax, (*P).pozycjay, &(Bok[(*frame) / 4]), &Renderer, NULL);
                position = 'S';
            }
            if ((*P).predkoscx < 0)
            {
                render((*P).pozycjax, (*P).pozycjay, &(Bok[(*frame) / 4]), &Renderer, NULL);
                position = 'S';
            }
            if ((*P).predkoscy > 0)
            {
                render((*P).pozycjax, (*P).pozycjay, &(Przod[(*frame) / 4]), &Renderer, NULL);
                position = 'F';
            }
            if ((*P).predkoscy < 0)
            {
                render((*P).pozycjax, (*P).pozycjay, &(Tyl[(*frame) / 4]), &Renderer, NULL);
                position = 'B';
            }
            if((*P).predkoscx==0 && (*P).predkoscy==0)
            {
                if (position == 'F')
                {
                    render((*P).pozycjax, (*P).pozycjay, &(Przod[(*frame) / 4]), &Renderer, NULL);
                }
            }
            ++(*frame);
            if ((*frame) / 4 >= ILOSC_ANIMACJI)
            {
                (*frame) = 0;
            }
        }
必须工作,但它不工作。 如果我在主功能中获得此顺序,则屏幕上不会显示任何内容

        Poruszanie(&P1);



                        render(0, 0, &TloGra, &Renderer,NULL);

                        for (int i = 0,x=x_sciany,y=y_sciany ; i < 17; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            x += 50;
                        }
                        for (int i = 0, x = x_sciany, y = y_sciany+50; i < 12; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            y += 50;
                        }
                        for (int i = 0, x = x_sciany+800, y = y_sciany+50; i < 12; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            y += 50;
                        }
                        for (int i = 0, x = x_sciany + 50, y = y_sciany + 600; i < 15; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            x += 50;
                        }
                        for (int i = 0, x = x_sciany + 100, y = y_sciany + 100; i < 5; i++)
                        {
                            for (int i = 0; i < 7; i++)
                            {
                                render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                                x += 100;
                            }
                            x -= 700;
                            y += 100;
                        }
                        Wydruk_postaci(&P1, &NPCprzod, &NPCtyl, &NPCbok, &Renderer, &klatki);



                    }
                    SDL_RenderPresent(Renderer);
Poruszanie(&P1);
渲染器(0、0和TloGra,渲染器和NULL);
对于(int i=0,x=x_-sciany,y=y_-sciany;i<17;i++)
{
渲染(x、y和Sciana、渲染器和Pomniejszacz);
x+=50;
}
对于(int i=0,x=x_-sciany,y=y_-sciany+50;i<12;i++)
{
渲染(x、y和Sciana、渲染器和Pomniejszacz);
y+=50;
}
对于(int i=0,x=x_-sciany+800,y=y_-sciany+50;i<12;i++)
{
渲染(x、y和Sciana、渲染器和Pomniejszacz);
y+=50;
}
对于(int i=0,x=x_-sciany+50,y=y_-sciany+600;i<15;i++)
{
渲染(x、y和Sciana、渲染器和Pomniejszacz);
x+=50;
}
对于(int i=0,x=x_-sciany+100,y=y_-sciany+100;i<5;i++)
{
对于(int i=0;i<7;i++)
{
渲染(x、y和Sciana、渲染器和Pomniejszacz);
x+=100;
}
x-=700;
y+=100;
}
Wydruk_postaci(&P1,&NPCprzod,&NPCtyl,&NPCbok,&Renderer,&klatki);
}
SDL_渲染器呈现(渲染器);

基本上,程序之前所做的就是在地图上渲染对象。

如果你得到一个大的随机数,可能是未初始化的内存。检查是否正确加载纹理/曲面。如果您找不到问题,我建议您尝试编写一个最小的完全可验证(这意味着我们可以立即编译)示例。纹理/曲面加载正确,因为如果我想在我的主函数中逐个函数“render”渲染相同的对象,一切都可以。如果我试图通过函数“Wydruk_Postaci”来呈现它,就会出现问题。没有关于内存泄漏的信息,我认为这仍然只是传递参数的问题。有时物体的尺寸也很好。400:400,有时会出现随机数。但我无法在屏幕上看到我的对象。如果smb好奇,我发现了一个问题,我错误地将渲染器传递给了渲染函数。应该有&(*渲染器)而不是纯渲染器(&R)
        Poruszanie(&P1);



                        render(0, 0, &TloGra, &Renderer,NULL);

                        for (int i = 0,x=x_sciany,y=y_sciany ; i < 17; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            x += 50;
                        }
                        for (int i = 0, x = x_sciany, y = y_sciany+50; i < 12; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            y += 50;
                        }
                        for (int i = 0, x = x_sciany+800, y = y_sciany+50; i < 12; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            y += 50;
                        }
                        for (int i = 0, x = x_sciany + 50, y = y_sciany + 600; i < 15; i++)
                        {
                            render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                            x += 50;
                        }
                        for (int i = 0, x = x_sciany + 100, y = y_sciany + 100; i < 5; i++)
                        {
                            for (int i = 0; i < 7; i++)
                            {
                                render(x, y, &Sciana, &Renderer, &Pomniejszacz);
                                x += 100;
                            }
                            x -= 700;
                            y += 100;
                        }
                        Wydruk_postaci(&P1, &NPCprzod, &NPCtyl, &NPCbok, &Renderer, &klatki);



                    }
                    SDL_RenderPresent(Renderer);