🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #967

OPENGL(6)

#967
From: ����
Date: Tue, 05 May 1998 00:00
168 lines
7828 bytes
BBSˮľ�廪վ�þ�����
������: yxy (��˿˿#���ߵ�С��ӥ), ����: GAME_Designer 
��  ��: OPENGL(6) 
����վ: BBS ˮľ�廪վ (Sun Jan 18 16:19:01 1998) 
 
�ⲿ��������Ҫ�IJ��֣�ǰ��ֻ�ǻ��������ܹ��մ��?�������?��Դ 
���á����ʶ����Լ���ؼ����ͼ��ѧ�ĸ�� 
һ����˵����3Dͼ��IJ��裺 
1 ��ģ   
2 ������ģ�;��任ͶӰ��2D͸��ͼ 
3 ȷ���������пɼ��棬�������� 
4 ���㳡����ɫ 
�����Ѿ���ǰ�������1 2 ���� 
������OPENGL�Ĺ��������Dz��ع��� 
����4����������ص㡣 
 
��һ������ 
��Ϊ�����䡢͸��� 
1 �򵥹���ģ�� 
�򵥹���ģ��ֻ����������淴�����Ӿ�Ӱ�졣�ٶ��������⻬��͸������ 
��������Ϲ��ɣ���������Ϊ�׹������� 
һ�㷴����Ϊ���������䡢������;��淴��3�������� 
 
��������⣨Ambient Light�����������ȴ���Χ�������������沢��������� 
���䡣 
������⣨Diffuse Light�����ض���Դ���������ķ��������Щ������������ 
����Ĺ⡣ 
���淴��⣨Specular Light������һ������ķ���⣬�����Դ�ڽ������ϲ��� 
�ĸ߹⣨Highlight���� 
��ϸ�ɲ��Ĵ�ѧ���?�Ǻ� 
 
����һ����Ҫ�ĺ��� 
(1) 
void glLight{if}[v](GLenum light,GLenum pname,TYPE param) 
���ù�Դ���ԡ� 
 
light���������磺GL_LIGHT0,GL_LIGHT1...GL_LIGHT7�� 
 
pname                         ȱʡֵ     ˵�� 
GL_AMBIENT                    0,0,0,1    RGBAģʽ�Ļ����� 
GL_DIFFUSE                    1,1,1,1    RGBAģʽ��������� 
GL_SPECULAR                   1,1,1,1    RGBAģʽ�ľ���� 
GL_POSTION                    1,0,1,0    ��Դλ�������� 
GL_SPOT_DIRECTION             0,0,-1     ���Դ�۹ⷽ��ʸ��(x,y,z,w) 
GL_SPOT_EXPONENT              0          ���Դ�۹�ָ�� 
GL_SPOT_CUTOFF                180        ���Դ�۹ⷢɢ��� 
GL_CONSTANT_ATTENUATION       1          ����˥������ 
GL_LINER_ATTENUATION          0          ����˥������ 
GL_QUADRATIC_ATTENUATION      0          ƽ��˥������ 
˵����GL_DIFFUSE GL_SPECULAR��ȱʡֵֻ����GL_LIGHT0, 
�����ԴGL_DIFFUSE GL_SPECULARȱʡֵΪ��(0.0,0.0,0.0,1.0) 
 
�������ҿ���ǰ����˵�ˣ����� 
TYPE����{}�е���Щ�������ͣ����磺i����int��f����float�� 
v�ǿ�ѡ����������������Ϊ������һ���Դ�� 
(2)���ù���/�رչ�Դ 
void glEnable(GLenum cap) 
void glDisable(GLenum cap) 
����ʹ��Դ��Ч�� 
glEnable(GL_LIGHT0); 
 
�������򵥹��յ����ӣ� 
///////////////////////////////////////// 
//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_SMOOTH��Ч��Ϻã������� 
//������������������䣬��ô��ɫ�ǰ��ռ���ģ��ƽ�����ģ������� 
//����С������Ч��ÿ��� 
//      glShadeModel(GL_FLAT); 
 
//����һ����Դ��λ����� 
        GLfloat light_position[]={1.0,1.0,1.0,0.0}; 
        glLightfv(GL_LIGHT0,GL_POSITION,light_position); 
 
//�����Դ����������ɫ����ɫ���Լ������⣨��ɫ����������ϻ�������� 
//���򣬾Ϳ��Կ�����Դ��Ч�����û��������������һ�£��ڵ����ĺ�ɫ 
//�������£��ܹ��յIJ��ֳ��ִ���ɫ����ⲿ�ֳ��ֺ�ɫ�� 
//�㻹���Ը���ϸ����������ָ���������ԣ������������ȱʡ���ˡ� 
        GLfloat light_diffuse[]={0.0,0.0,1.0,1.0}; 
        glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse); 
        GLfloat light_ambient[]={1.0,0.0,0.0,1.0}; 
        glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient); 
 
 
//����GL_LIGHTING ��˵���� 
//If enabled, use the current lighting parameters to compute the  
//vertex color or index. If disabled, associate the current color  
//or index with each vertex. ���Enabled��ʹ�õ�ǰ���ղ������ÿ�� 
//�����ɫ�����������ȥ����䣬��ôȱʡ�İ�ɫ�������Դ�������� 
//��ɫ��Դ�㽫����һ����ɫ��û������е��� 
        glEnable(GL_LIGHTING); 
        glEnable(GL_LIGHT0); 
 
//����GL_LESS��˵�� 
//Passes if the incoming z value is less than the stored z value.  
//This is the default value.  
//��glEnable(GL_DEPTH_TEST)������ȱȽϣ�Ȼ�������z���С��buffer�� 
//��ֵ����ǰ��z��С�����۲�㣩������ʾ��ʵ�ʾ��������� 
        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) 
{ 
//���ø���⺯��һ��ʵ��Բ�򡣰뾶1.0 
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 
///////////////////////////////////////////// 
 
-- 
�� ��Դ:��BBS ˮľ�廪վ bbs.net.tsinghua.edu.cn��[FROM: 166.111.74.90] 

BBSˮľ�廪վ�þ�����

�� ��Դ: �й�ƴ�BBSվ [bbs.ustc.edu.cn]
Technical Details
Message-ID: <980505.yWbS3$PBBS@bbs.ustc.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,ad019b9b3e55bb55,start
X-Google-Attributes: gidfc86e,public
From: Ambi_A@bbs.ustc.edu.cn (����)
Subject: OPENGL(6)
Date: 1998/05/05
Message-ID: <980505.yWbS3$PBBS@bbs.ustc.edu.cn>
X-Deja-AN: 350412451
Organization: �й�ƴ�BBSվ
Newsgroups: cn.bbs.comp.program