Thread View: cn.bbs.comp.program
1 messages
1 total messages
Started by ����
Tue, 05 May 1998 00:00
OPENGL(10)
Author: ����
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]
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads