gpt4 book ai didi

GL_QUAD_STRIP 上的 OpenGL 照明和着色

转载 作者:行者123 更新时间:2023-12-01 12:52:14 25 4
gpt4 key购买 nike

OpenGL 的新手,试图实现一个带有阴影和光照的球体。我知道我可以调用一个球体函数,但我正在尝试创建自己的函数。但是,虽然我可以在场景中的其他对象(例如 glcubes 等)上获得光照和阴影,但我无法在球体上获得任何阴影或光照。任何建议将不胜感激!

波纹管是我绘制球体的函数:

void cg_SolidSphere( GLint slices, GLint stacks )
{
float x, y, z ;
for( float lat = 0 ; lat < PI ; lat = lat + PI/stacks )
{
glBegin( GL_QUAD_STRIP ) ;
for( float lon = 0 ; lon < 2*PI ; lon = lon + 2*PI/slices )
{
x = cosf( lat ) * sinf( lon ) ;
y = sinf( lat ) * sinf( lon ) ;
z = cosf( lon ) ;
glVertex3f( x, y, z ) ;
x = cosf( lat + PI/stacks ) * sinf( lon ) ;
y = sinf( lat + PI/stacks ) * sinf( lon ) ;
z = cosf( lon ) ;
glVertex3f( x, y, z ) ;
}
glEnd() ;
}
}

最佳答案

您也需要 glNormal3f 调用。在这种情况下,法线与顶点相同,因此我们可以使用相同的点:

x = cosf( lat ) * sinf( lon ) ;
y = sinf( lat ) * sinf( lon ) ;
z = cosf( lon ) ;
glNormal3f( x, y, z ) ;
glVertex3f( x, y, z ) ;
x = cosf( lat + PI/stacks ) * sinf( lon ) ;
y = sinf( lat + PI/stacks ) * sinf( lon ) ;
z = cosf( lon ) ;
glNormal3f( x, y, z ) ;
glVertex3f( x, y, z ) ;

关于GL_QUAD_STRIP 上的 OpenGL 照明和着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701377/

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