Article View: cn.bbs.comp.program
Article #971OPENGL(10)
From: ����
Date: Tue, 05 May 1998 00:00
Date: Tue, 05 May 1998 00:00
217 lines
10857 bytes
10857 bytes
BBSˮľ�廪վ�þ�����
������: yxy (��˿˿#���ߵ�С��ӥ), ����: GAME_Designer
�� ��: OPENGL(10)
����վ: BBS ˮľ�廪վ (Wed Jan 21 17:52:06 1998)
OPENGL������
��3Dͼ���У�����ӳ���ǹ㷺ʹ�õġ�����ӳ��Ҳ���൱���ӵĹ�̣�
һ ��������
�� �����˲�
�� ˵��ӳ�䷽ʽ
�� ���Ƴ������������������ͼ������
ע�⣡������ӳ��ֻ����RGBAģʽ��ʹ�ã�����������ɫ����ģʽ
1.���?��
void glTexImage2D( GLenum target, GLint level, GLint components,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type, const GLvoid *pixels );
����һ����ά����ӳ�䡣
target�dz��� GL_TEXTURE_2D
level��ʾ�༶�ֱ��ʵ�����ͼ��ļ�����ֻ��һ�ֱַ��ʣ�levelΪ0��
components�Ǵ�1��4������1��ѡ��R��2��ѡ��R A��3��ѡ��R G B��
4��ѡ��R G B A��
width height������ijߴ硣
format��type����ӳ���ʽ��������͡�������ǰ�潲��glDrawPixels()��
��������ͬ����������?����ͼ������
�����һά���?�壺
void glTexImage1D( GLenum target, GLint level, GLint components,
GLsizei width, GLint border, GLenum format,
GLenum type, const GLvoid *pixels );
��֮ͬ������target�dz���GL_TEXTURE_1D�������ṩ�����Ӧ����һά���顣
һ���������ά��Ӧ����2���ݴΣ���ʱ��Ҫ������ͼ��ϱ߽���ݡ�
2.������ƣ��˲����ظ������ޣ�
�����������ͨ��
void glTexParameter{if}[v](GLenum target,GLenum pname,TYPE param);
��ʵ�֣�target������GL_TEXTURE_1D GL_TEXTURE_2D��˵����һά���Ƕ�ά
���?pname��param�Ŀ���ȡֵ���£�
pname: param:
GL_TEXTURE_WRAP_S GL_CLAMP
GL_REPEAT
GL_TEXTURE_WRAP_T GL_CLAMP
GL_REPEAT
GL_TEXTURE_MAG_FILTER GL_NEAREST
GL_LINEAR
GL_TEXTURE_MIN_FILTER GL_NEAREST
GL_NEAREST_MIPMAP_NEAREST
GL_NEAREST_MIPMAP_LINEAR
GL_LINEAR_MIPMAP_NEAREST
GL_LINEAR_MIPMAP_LINEAR
2.1 �˲�
ԭʼ����ͼ���Ǹ�����ͼ����ӳ�䵽���ι�״�������ϣ�һ�㲻����ͼ��
�ϵ�һ�����ض�Ӧ��Ļ��һ�����ء���˾ֲ��Ŵ���Сʱ����Ҫ������ʵ���
����ʽ����2DΪ��
void glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
void glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
ǰ���ǷŴ��˲���GL_TEXTURE_MAG_FILTER����
��������С�˲���GL_TEXTURE_MIN_FILTER����
���⣬GL_NEAREST���������������������ĵ�����Ԫ�أ����п���ʹͼ��
���ͣ��������ٶȿ죻GL_LINEAR�������β�ֵ��Ч��õ���������
2.2�ظ�������
����ӳ������ظ�ӳ���������ӳ�䣬�ظ�ӳ��ʱ����������Լ������S T��
���ظ���
�����ظ�ӳ�䣺
void glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
void glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
����GL_REPEAT��ΪGL_CLAMP�������ޣ����д���1������Ԫ��ֵ��Ϊ1������С��
0������Ԫ��ֵ��Ϊ0��
3. ӳ�䷽ʽ
�������?��ͼ����ɫ�����屾����ɫ�Ĺ�ϵ��
void glTexEnv{if}[v](GLenum target,GLenum pname,TYPE param);
target������GL_TEXTURE_ENV;
pname��GL_TEXTURE_ENV_MODE����param������ GL_DECAL GL_MODULATE��
GL_BLEND��˵������ֵ��ԭ����ɫ��ͬ�Ĵ��?ʽ��
pname��GL_TEXTURE_ENV_COLOR�������param�ǰ�4��������R��G��B��A��
�����顣��Щֵֻ�ڲ���GL_BLEND���?��ʱ�Ų��á�
4. �������
���Ķ��壺����ͼ���Ƿ��εģ��������ɶ����s,t,r,q��꣬�������
���ϵ��x,y,z,w��ꡣ
void glTexCoord{1234}{sifd}[v](TYPE coords)��
���õ�ǰ������꣬�˺����glVertex*()�����Ķ��㶼���赱ǰ��������ꡣ
5. ����Զ�����
��ʱ����ҪΪÿ�����嶥�㸳��������꣬����ʹ��
void glTexGen{if}(GLenum coord,GLenum pname,TYPE param);
coordΪ��GL_S GL_T GL_R��GL_Q��ָ���ĸ�����Զ�����
pnameΪGL_TEXTURE_GEN_MODEʱ
paramΪ����GL_OBJECT_LINEAR GL_EYE_LINEAR��GL_SPHERE_MAP�����Ǿ�����
�ĸ������������������
pnameΪGL_OBJECT_PLANE��GL_EYE_PLANE��paramʱһ��ָ����������ָ�롣
���뿴һ�������ӣ�
////////////////////////////////////////////
//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);
//��������ͼ����ӳ���
#define TEXTUREWIDTH 64
#define TEXTUREHEIGHT 64
GLubyte Texture[TEXTUREWIDTH][TEXTUREHEIGHT][3];
void makeTexture(void)
{
int i,j,r,g,b;
for(i=0;i<TEXTUREWIDTH;i++)
{
for(j=0;j<TEXTUREHEIGHT;j++)
{
r=(i*j)%255;
g=(4*i)%255;
b=(4*j)%255;
Texture[i][j][0]=(GLubyte)r;
Texture[i][j][1]=(GLubyte)g;
Texture[i][j][2]=(GLubyte)b;
}
}
}
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);
//��������ͼ���ԭʼ��ݱ�����Texture[][][]��
makeTexture();
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
//���������
glTexImage2D(GL_TEXTURE_2D,0,3,TEXTUREWIDTH,
TEXTUREHEIGHT,0,GL_RGB,GL_UNSIGNED_BYTE,
&Texture[0][0][0]);
//�����˲�
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
//˵��ӳ�䷽ʽ
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
//���Ӧ�ú����ˣ���������ģʽ
glEnable(GL_TEXTURE_2D);
// glShadeModel(GL_FLAT);
}
void CALLBACK reshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//���������Ӿ���
gluPerspective(60.0,1.0*(GLfloat)w/(GLfloat)h,1.0,30.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0,0.0,-3.6);
}
void CALLBACK display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glBegin(GL_QUADS);//�����ı���
//�Ȼ������Σ�������ʾʵ��δ���ε�����ͼ��
glTexCoord2f(0.0,0.0);glVertex3f(-2.0,-1.0,0.0);
glTexCoord2f(0.0,1.0);glVertex3f(-2.0,1.0,0.0);
glTexCoord2f(1.0,1.0);glVertex3f(0.0,1.0,0.0);
glTexCoord2f(1.0,0.0);glVertex3f(0.0,-1.0,0.0);
//����һ���������ı��Σ�������ʾ�����������������״����εġ�
glTexCoord2f(0.0,0.0);glVertex3f(0.0,-1.0,0.0);
glTexCoord2f(0.0,1.0);glVertex3f(0.0,1.0,0.0);
glTexCoord2f(1.0,1.0);glVertex3f(1.41421,1.0,-1.41421);
glTexCoord2f(1.0,0.0);glVertex3f(1.41421,-1.0,-1.41421);
glEnd();
glFlush();
}
void main(void)
{
myinit();
auxReshapeFunc(reshape);
auxMainLoop(display);
}
//end of sample
///////////////////////////////////////////////////////////
��������������������Ķ���Ϳ��ƱȽ��鷳�Ͳ���������⣬��Ӧ����ʮ��
����ġ�ֻ�����������ϵѡ�����ʵ㸽��ʵ�����嶥���ϼ��ɡ����ڸ���
�����?��Ϳ��ƣ���Ҳ�������иı�һЩ�����Ч����Ρ������
GL_LINEAR�ij�GL_NEAREST������������Ա�Ĵֲڣ���������ȴ��Ķࡣ
��Ҳ���ԸĶ�glTexCoord2f()�IJ�������ѡ�������һ���֣���������
ѡ��ȫ�����?����ͼ������1.0�ij�0.5��ѡ��ʵ�����������1/4��������ͼ��
�´ν����һ�����ӵ�����Ӧ�õ����Ӻ�˵����18:03 98-1-21
--
�� ��Դ:��BBS ˮľ�廪վ bbs.net.tsinghua.edu.cn��[FROM: 166.111.74.90]
BBSˮľ�廪վ�þ�����
�� ��Դ: �й�ƴ�BBSվ [bbs.ustc.edu.cn]
Technical Details
Message-ID:
<980505.yWbU5$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,e72571a00d1d605d,start X-Google-Attributes: gidfc86e,public From: Ambi_A@bbs.ustc.edu.cn (����) Subject: OPENGL(10) Date: 1998/05/05 Message-ID: <980505.yWbU5$PBBS@bbs.ustc.edu.cn> X-Deja-AN: 350421244 Organization: �й�ƴ�BBSվ Newsgroups: cn.bbs.comp.program