OpenGL作為一種圖形與硬件的接口,與其他圖形程序開發(fā)工具相比較,它提供了眾多圖形函數(shù),直觀的編程環(huán)境簡化了三維圖形的繪制過程,使用OpenGL搭建一個(gè)三維場景,能夠通過輸入設(shè)備與場景內(nèi)物體交互。豪華單間
配置環(huán)境:vs22+freeglut庫
1.繪制墻體使其成為封閉空間,在封閉空間內(nèi)完成場景的布置
//空間基本架構(gòu)
void drawWall()
{
glColor3f(0.47, 0.54, 0.60);//rgb顏色可調(diào)
GLfloat matWall[] = { 0.37, 0.83, 0.98};
GLfloat matBlack[] = { 0, 0, 0, 1 };
GLfloat matWhite[] = { 1, 1, 1, 1 };
GLfloat matShininess[] = { 40 };
glMaterialfv(GL_FRONT, GL_AMBIENT, matWall);
glMaterialfv(GL_FRONT, GL_DIFFUSE, matWall);
glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
// 左邊
drawQuads(-10, 10, -20,
-10, 10, 0,
-10, -10, 0,
-10, -10, -20);
// 右邊
drawQuads(10, -10, -20,
10, -10, 0,
10, 10, 0,
10, 10, -20);
// back
drawQuads(10, 10, -20,
-10, 10, -20,
-10, -10, -20,
10, -10, -20);
// 天花板
drawQuads(10, 10, -20,
10, 10, 0,
-10, 10, 0,
-10, 10, -20);
// 地板
glColor3f(0.75, 0.75, 0.75);
drawQuads(-10, -10, -20,
-10, -10, 0,
10, -10, 0,
10, -10, -20);
}
glMaterialfv ()函數(shù)指定照明模型的材料參數(shù)。
2.繪制一張床將其放在角落(左)
void drawBed()
{
glColor3f(1, 0.8, 0.5);
glMaterialfv(GL_FRONT, GL_AMBIENT, matBrown);
glMaterialfv(GL_FRONT, GL_DIFFUSE, matBrown);
glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
// 床頭
glPushMatrix();
glTranslatef(-9.5, -6, -16);
glScalef(1, 8, 8);
glutSolidCube(1);
glPopMatrix();
// 床尾
glPushMatrix();
glTranslatef(4.5, -8.5, -16);
glScalef(1, 3, 8);
glutSolidCube(1);
glPopMatrix();
//床板
glPushMatrix();
glTranslatef(-2, -7, -16);
glScalef(14, 1, 8);
glutSolidCube(1);
glPopMatrix();
//床墊
glColor3f(0.6, 0.97, 0.6);
glMaterialfv(GL_FRONT, GL_AMBIENT, matGreen);
glMaterialfv(GL_FRONT, GL_DIFFUSE, matGreen);
glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
glPushMatrix();
glTranslatef(-2, -6, -16);
glScalef(14, 1, 8);
glutSolidCube(1);
glPopMatrix();
}
效果圖如下:
3.房間的一些基本配置
void drawDesk()
{
glColor3f(1, 0.8, 0.5);
glMaterialfv(GL_FRONT, GL_AMBIENT, matBrown);
glMaterialfv(GL_FRONT, GL_DIFFUSE, matBrown);
glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
//書桌
glPushMatrix();
glTranslatef(9, -4, -10);
glScalef(4, 0.5, 20);
glutSolidCube(1);
glPopMatrix();
glPushMatrix();
glTranslatef(9.75, -7, -10);
glScalef(0.5, 6, 20);
glutSolidCube(1);
glPopMatrix();
//床頭柜
glPushMatrix();
glTranslatef(-8, -8, -10);
glScalef(4, 4, 4);
glutSolidCube(1);
glPopMatrix();
}
這桌子建議改成實(shí)體的bushi再添置一個(gè)茶壺 bushi文章來源:http://www.zghlxwxcb.cn/news/detail-510348.html
void drawTeapot()
{
glColor3f(0.80,0.71,0.34);
glMaterialfv(GL_FRONT, GL_AMBIENT, matBrown);
glMaterialfv(GL_FRONT, GL_DIFFUSE, matBrown);
glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
glPushMatrix();
glTranslatef(-8, -5.5, -10);
glRotatef(-100, 0, 1, 0);
glutSolidTeapot(0.8);
glPopMatrix();
}
場景先寫到這兒吧,其他物品隨意可加的,下一篇寫畫安卓精靈求個(gè)關(guān)注
完整源碼評(píng)論區(qū)留郵箱文章來源地址http://www.zghlxwxcb.cn/news/detail-510348.html
到了這里,關(guān)于計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!