Article View: cn.bbs.comp.program
Article #968OPENGL(7)
From: ����
Date: Tue, 05 May 1998 00:00
Date: Tue, 05 May 1998 00:00
367 lines
15781 bytes
15781 bytes
BBSˮľ�廪վ�þ�����
������: yxy (��˿˿#���ߵ�С��ӥ), ����: GAME_Designer
�� ��: OPENGL(7)
����վ: BBS ˮľ�廪վ (Mon Jan 19 11:20:59 1998)
������һ�Σ���ؽ����ʣ�
OPENGLͨ����϶�R��G��B�Ľ��Ʒ����������ƶ��������ɫ��
Ҳ��Ϊ�����������䡢���淴��ɷ֡����Ǿ������϶Ի����⡢��������
���淴���ķ���̶ȡ������ϵ��������Դ���Խ�Ͼ��ǹ۲��������ʾ
Ч�������ɫ�������Ǻ�ɫ���ڹ�Դ�γɵĸ߹������ֹ�Դ
��������ɫ����EASY������ô��
���ʵĶ��壺
void glMaterial{if}[v](GLenum face,GLenum pname,TYPE param);
����
face:������GL_FRONT��GL_BACK��GL_FRONT_AND_BACK,�������ǰ����Ӧ��
���������һ�������ϡ�
pname˵���ض��������ԣ���������һ�ι�Դ�Ķ��壩��
pname ȱʡֵ ˵��
GL_AMBIENT 0.2,0.2,0.2,1.0 ���ʵĻ��������
GL_DIFFUSE 0.8,0.8,0.8,1.0 ���ʵ��������
GL_AMBIENT_AND_DIFFUSE ���ʵĻ���������������ɫ
GL_SPECULAR 0.0,0.0.0.0,1.0 ���ʾ��淴���
GL_SHINESS 0.0 ����ָ����նȣ�
GL_EMISSION 0.0,0.0,0.0,1.0 ���ʵķ�����ɫ
GL_COLOR_INDEXES 0,1,1 ���ʵĻ����⡢�������;���
�������ɫ
�뿴������ʵļ����ӣ�
////////////////////////////////////////////////////////////////////////
//sample.cpp
#include "glos.h"
#include <GL/gl.h>
#include <GL/glaux.h>
#include "windows.h"
void myinit(void);
void CALLBACK display(void);
void CALLBACK reshape(GLsizei w,GLsizei h);
void myinit(void)
{
auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
auxInitPosition(0,0,500,500);
auxInitWindow("sample1");
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
// glShadeModel(GL_FLAT);
//���ȶ���һ�����ʣ����巽���dz�����ǰ�潲���Ĺ�Դ���塣
GLfloat mat_ambient[]={0.8,0.8,0.8,1.0};
//���� ��ɫ ������������
GLfloat mat_diffuse[]={0.8,0.0,0.8,1.0};
//���� ����ɫ �ľ��淴������
GLfloat mat_specular[]={1.0,0.0,1.0,1.0};
//���徵�淴��Ĺ�����
GLfloat mat_shininess[]={50.0};
//�����ϲ��ʶ���Ӧ��
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);
//�������Ǽ�Դ������ʾ���ʵ�Ч��
//��������ָֻ����Դλ�ã�����Ĭ�ϣ���ɫ��Դ��
//��Ҳ���Լ����Դ�Ķ��壬������Դ�Ͳ��ʵĺϳɵ�Ч��
//������Ϊ�����ܹ��ϳɣ����ܲ������ʵ����ж�Ķ��Ч����Ҳ����
//3D���������˵��������ڡ�
GLfloat light_position[]={1.0,1.0,1.0,0.0};
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
// GLfloat light_diffuse[]={0.0,0.0,1.0,1.0};
// glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
//����Դ����Ӧ��
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
//��ɫ����
//*******��ʵ˵���֣�����Ǵ����� Z-BUFFER ѽ************//
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
}
void CALLBACK reshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-2.0,2.0,-2.0*(GLfloat)h/(GLfloat)w,
2.0*(GLfloat)h/(GLfloat)w,-10.0,10.0);
else
glOrtho(-2.0*(GLfloat)h/(GLfloat)w,
2.0*(GLfloat)h/(GLfloat)w,-2.0,2.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void draw(void)
{
auxSolidSphere(1.0);
}
void CALLBACK display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
draw();
glFlush();
}
void main(void)
{
myinit();
auxReshapeFunc(reshape);
auxMainLoop(display);
}
//end of sample
////////////////////////////////////////////////////
ͨ�����ϵ����ӣ����ǻῴ�����ʶ����ʵ�ֺ�Դ��Ч����һ��ģ�
�������ճ��ĸо���������ʸ�ӷ�����ǵ�ϰ�ߡ����Դʹ�ð⡣
�������ǿ�������һ����ɫ������߹ⲿ�ֳ�������ɫ��
��Ϊ�Ƚϣ��������Ǹ��һ��12����ɫ������ӣ���ҿ��Կ�������
��Դ������Ӧ�õ�Ч����һ��Ƚϡ�
�������֮ǰ��������������
void glPushMatrix();
void glPopMatrix();
��ǰ���Ѿ��������м���ͶӰ�任���Ǿ�����˵Ľ�������ϣ��
����һ����ʼ���㣬��Ҫ�õ���������Ҫ���������ջ�;����ջ��
�����������⣬Ϊ�������Ͻǻ�һ�������ȱ��浱ǰ����glPushMatrix()
����ջ����Ȼ������ƽ�Ƶ����Ͻǣ�Ȼ�����auxSolidSphere(1.0)����
һ���뾶1.0������ʱ�ٵ���glPopMatrix()�������ջ�������ֻص�ԭʼ���
�㣬��ʱ����������Ͻ��֡�
�������ܳ�����ʵ���ϣ����IJ���ͳͳ���ظ���12����Ĺ���������Ҳ�Ƚ�
����⡣
//////////////////////////////////////////////////////////////////
//sample.cpp
#include "glos.h"
#include <GL/gl.h>
#include <GL/glaux.h>
#include "windows.h"
void myinit(void);
void CALLBACK display(void);
void CALLBACK reshape(GLsizei w,GLsizei h);
void myinit(void)
{
auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
auxInitPosition(0,0,500,500);
auxInitWindow("sample1");
glClearColor(0.0,0.1,0.1,0.0);
glClear(GL_COLOR_BUFFER_BIT);
// glShadeModel(GL_FLAT);
//���ȶ����Դ
GLfloat light_ambient[]={0.0,0.0,0.0,1.0};
GLfloat light_diffuse[]={1.0,1.0,1.0,1.0};
GLfloat light_specular[]={1.0,1.0,1.0,1.0};
GLfloat light_position[]={0.0,3.0,2.0,0.0};
GLfloat Imodel_ambient[]={0.4,0.4,0.4,1.0};
//Ӧ�ù�Դ
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
//��ʼ��Z BUFFER
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
}
void CALLBACK reshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-6.0,6.0,-6.0*(GLfloat)h/(GLfloat)w,
6.0*(GLfloat)h/(GLfloat)w,-10.0,10.0);
else
glOrtho(-6.0*(GLfloat)h/(GLfloat)w,
6.0*(GLfloat)h/(GLfloat)w,-6.0,6.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void draw(void)
{
auxSolidSphere(1.0);
}
void CALLBACK display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//����������ݿ�
GLfloat no_mat[]={0.0,0.0,0.0,1.0};
GLfloat mat_ambient[]={0.7,0.7,0.7,1.0};
GLfloat mat_ambient_color[]={0.8,0.8,0.2,1.0};
GLfloat mat_diffuse[]={0.1,0.5,0.8,1.0};
GLfloat mat_specular[]={1.0,1.0,1.0,1.0};
GLfloat no_shininess[]={0.0};
GLfloat low_shininess[]={5.0};
GLfloat high_shininess[]={100.0};
GLfloat mat_emission[]={0.3,0.2,0.2,0.0};
//////////////////////////////////////////////////////////
//1-1 ����������⣬������;����
glPushMatrix();
glTranslatef(-3.75,3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//1-2 ��������⣬�����е߹⣬������
glPushMatrix();
glTranslatef(-1.25,3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//1-3 ���������;���⣬�����ĸ߹⣬������
glPushMatrix();
glTranslatef(1.25,3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//1-4 ���������ͷ���⣬������;��淴���
glPushMatrix();
glTranslatef(3.75,3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,no_mat);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
draw();
glPopMatrix();
//////////////////////////////////////////////////////////////
//2-1 ���������ͻ����⣬���淴���
glPushMatrix();
glTranslatef(-3.75,0.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//2-2 ��������⡢������;���⣬�����е߹�
glPushMatrix();
glTranslatef(-1.25,0.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//2-3 ������������;���⣬�����к����ĸ߹�
glPushMatrix();
glTranslatef(1.25,0.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//2-4��������⡢������ͷ���⣬�����
glPushMatrix();
glTranslatef(3.75,0.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
draw();
glPopMatrix();
///////////////////////////////////////////////////////////////
//3-1 ��������������ɫ�Ļ����⣬�����
glPushMatrix();
glTranslatef(-3.75,-3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//3-2��������������ɫ�Ļ������Լ�����⣬���е߹�
glPushMatrix();
glTranslatef(-1.25,-3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,low_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//3-3 ��������������ɫ�Ļ������Լ�����⣬���к����ĸ߹�
glPushMatrix();
glTranslatef(1.25,-3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,high_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,no_mat);
draw();
glPopMatrix();
//3-4 ��������������ɫ�Ļ������Լ�����⣬�����
glPushMatrix();
glTranslatef(3.75,-3.0,0.0);
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient_color);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,no_mat);
glMaterialfv(GL_FRONT,GL_SHININESS,no_shininess);
glMaterialfv(GL_FRONT,GL_EMISSION,mat_emission);
draw();
glPopMatrix();
glFlush();
}
void main(void)
{
myinit();
auxReshapeFunc(reshape);
auxMainLoop(display);
}
//end of sample
/////////////////////////////////////////////////////////////
--
�� ��Դ:��BBS ˮľ�廪վ bbs.net.tsinghua.edu.cn��[FROM: 166.111.74.90]
BBSˮľ�廪վ�þ�����
�� ��Դ: �й�ƴ�BBSվ [bbs.ustc.edu.cn]
Technical Details
Message-ID:
<980505.yWbSj$PBBS@bbs.ustc.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: fc86e,9cce33a1215517a3,start X-Google-Attributes: gidfc86e,public From: Ambi_A@bbs.ustc.edu.cn (����) Subject: OPENGL(7) Date: 1998/05/05 Message-ID: <980505.yWbSj$PBBS@bbs.ustc.edu.cn> X-Deja-AN: 350416394 Organization: �й�ƴ�BBSվ Newsgroups: cn.bbs.comp.program