使用OPENGL GLUT绘制台球桌口袋 [英] Drawing Pool table Pockets using OPENGL GLUT

查看:78
本文介绍了使用OPENGL GLUT绘制台球桌口袋的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

正如标题所述,我已经画了桌子的其余部分,只是在掏出口袋时遇到了麻烦.

As the title says really, I have drawn the rest of the table just having trouble drawing the pockets..

#pragma region Table Drawing Code

void drawTable()
{

glBegin(GL_QUADS); // RIGHT
glNormal3f(0,0,1);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, 0.0f, m_TableWidth); //bottom left
glVertex3f(m_TableLength, 0.0f, m_TableWidth);//bottom right
glVertex3f(m_TableLength, 0.0f, m_TableWidth);//top right
glVertex3f(m_TableX, 0.0f, m_TableWidth); //top left        
glEnd();

glBegin(GL_QUADS); //BACK
glNormal3f(1,0,0);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableLength, 0.0f,  m_TableWidth);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableWidth);
glEnd();

glBegin(GL_QUADS); //FRONT
glNormal3f(-1,0,0);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glVertex3f(m_TableX, 0.0f, m_TableWidth);
glVertex3f(m_TableX, 0.0f, m_TableWidth);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glEnd();

glBegin(GL_QUADS); //lEFT
glNormal3f(0,0,-1);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glVertex3f(m_TableX, 0.0f, m_TableZ);
glVertex3f(m_TableLength, 0.0f, m_TableZ);
glEnd();

glBegin(GL_QUADS); //BOTTOM
glNormal3f(0,-1,0);
glColor3d(0.5,0.35,0.05);
glVertex3f(m_TableX, -0.001f,  m_TableWidth);
glVertex3f(m_TableLength, -0.001f,  m_TableWidth);
glVertex3f(m_TableLength, -0.001f, m_TableZ); 
glVertex3f(m_TableX, -0.001f, m_TableZ);
glEnd();


}

#pragma endregion

我是OpenGL的新手,所以我不确定使用什么方法来获得与坐垫和桌子上的孔相连的曲线以使球掉落.

I am new to OpenGL so I'm not sure what to use to get the curve that is connected to the cushions and the hole in the table for the ball to drop.

推荐答案

尝试使用gluPartialDisk为口袋的角落绘制一个"C"形 例如

try using gluPartialDisk to draw a "C" shape for the corner of the pocket for example

无效磁盘() {

gluPartialDisk(gluNewQuadric(),1,1.2,10,1,0.0,-180); }

gluPartialDisk(gluNewQuadric(),1, 1.2, 10, 1, 0.0, -180); }

然后声明disk();在您的绘制方法中

then declare disk(); in your draw method

这篇关于使用OPENGL GLUT绘制台球桌口袋的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆