• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: C/C++
  • 标签: opengl  花瓶  源码  

资源简介

该代码提供了一个简单的方法绘制花瓶,源码具有参考性。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#define PI 3.1415
double Noise(int x int y)    // 根据(xy)获取一个初步噪声值  
{
int n = x + y * 57;
n = (n << 13) ^ n;
return (1.0 - ((n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0);
}
struct Point
{

double x y z;
Point();
Point(double _x double _y double _z) {
x = _x;
y = _y;
z = _z;
}

};
double *vertex;
vector m_vertex;
void BuildVase();

void init() {
glClearColor(0 0 0 0);
glShadeModel(GL_SMOOTH);

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
GLfloat light_ambient[4] = { 10.111.0 };
GLfloat light_diffuse[4] = { 0000.0 };
GLfloat light_specular[4] = { 0000.0 };
GLfloat light_position[4] = { 100.01000.00.0 };

glLightfv(GL_LIGHT0 GL_AMBIENT light_ambient);
glLightfv(GL_LIGHT0 GL_DIFFUSE light_diffuse);
glLightfv(GL_LIGHT0 GL_SPECULAR light_specular);
glLightfv(GL_LIGHT0 GL_POSITION light_position);

BuildVase();


}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
gluLookAt(0 700 1000 0 0 0 0 1 0);

glTranslatef(0 -100 0);
glDisable(GL_LIGHTING);
glBegin(GL_QUADS);
for (int i = 0; i < m_vertex.size(); i++)
{
//glColor3f(1 0 0);
float cx = Noise(0 m_vertex[i].x);
float cy = Noise(0 m_vertex[i].y);
float cz = Noise(0 m_vertex[i].z);
glColor3f(cz cz cz);
glVertex3f(m_vertex[i].x m_vertex[i].y m_vertex[i].z);
}
glEnd();
glEnable(GL_LIGHTING);
//glutSolidSphere(5.0 20 10);

glutSwapBuffers();
}

void reshape(int w int h)
{
glViewport(0 0 (GLsizei)w (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(40.0 (GLfloat)w / (GLfloat)h 0.1 30000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

评论

共有 条评论