gpt4 book ai didi

c++ - SDL OpenGL C++ 问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:36 25 4
gpt4 key购买 nike

我正在尝试使用 C++ 中的 SDL 和 OpenGL 制作一个简单的乒乓球游戏,但我无法在屏幕上显示任何类型的 OpenGL 图像,想知道是否有人可以提供帮助:

初始化:

void init_everything()
{
SDL_Init( SDL_INIT_EVERYTHING );
SDL_SetVideoMode( width_of_screen, height_of_screen, bpp_of_screen, SDL_OPENGL );

glClearColor( 0, 0, 0, 0 );

// Sets the projection
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, width_of_screen, height_of_screen, 0, 1, -1 );

// initalises the modelview matrix
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

SDL_WM_SetCaption( "Pong - By Michael Clover", NULL );
}

在此之后我调用类函数:

void paddle::show()
{
//Move to offset
glTranslatef( x, y, 0 );

//Start quad
glBegin( GL_QUADS );

//Set color to white
glColor4f( 1.0, 1.0, 1.0, 1.0 );

//Draw square
glVertex3f( 0, 0, 0 );
glVertex3f( paddle_width, 0, 0 );
glVertex3f( paddle_width, paddle_height, 0 );
glVertex3f( 0, paddle_height, 0 );

//End quad
glEnd();

//Reset
glLoadIdentity();

}

然后我把它放在我的主要功能中:

int main( int argc, char **argv )
{
bool quit = false;

init_everything();

paddle playerpaddle;

while (quit == false )
{
while( SDL_PollEvent( &event ) )
{
playerpaddle.handle_input();

if (event.type == SDL_QUIT)
{
quit = true;
}
}
playerpaddle.move();
glClear( GL_COLOR_BUFFER_BIT );
playerpaddle.show();
SDL_GL_SwapBuffers();

}

clean_up();
return 0;
}

我得到的只是我在 640 x 480 像素 SDL 屏幕中设置的恒定黑色背景屏幕。

对于大量文本,我深表歉意,我将非常感谢您对此处可能存在的问题的任何见解,我猜我在某处犯了一个愚蠢的错误。

最佳答案

我认为 glOrtho 可能设置错误。最后 2 个参数是 near 和 far 裁剪平面。如果你不想夹住你的桨,你的近平面应该小于零。你的远平面应该大于零。所以试试这个:

glOrtho( 0, width_of_screen, height_of_screen, 0, -1, 1 );

关于c++ - SDL OpenGL C++ 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7585828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com