- 注册时间
- 2004-11-1
- 最后登录
- 2018-4-24
版主
  
- 积分
- 548
|
发表于 2007-3-18 11:58:21
|
显示全部楼层
- module mydraw;
- import derelict.opengl.gl;
- import loadtexture;
- int DrawGLScene()
- {
- GLuint texture[3];
- texture[0] = loadTex("Panoramas.jpg","jpg");
- texture[1] = loadTex("jqwz.jpg","jpg");
- texture[2] = loadTex("jqwz_mask.jpg","jpg");
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity();
- glTranslatef(-0.0f,0.0f,-5.0f);
- glBindTexture(GL_TEXTURE_2D, texture[0]);//背景纹理
- glBegin(GL_QUADS);
- glTexCoord2f( 0.0f, 1.0f ); glVertex3f( -2.0f, -2.0f, 2.0f );
- glTexCoord2f( 1.0f, 1.0f ); glVertex3f( 2.0f, -2.0f, 2.0f );
- glTexCoord2f( 1.0f, 0.0f ); glVertex3f( 2.0f, 2.0f, 2.0f );
- glTexCoord2f( 0.0f, 0.0f ); glVertex3f( -2.0f, 2.0f, 2.0f );
- glEnd();
- //先画上mask,白色被过滤,黑色显示
- glDisable(GL_DEPTH_TEST);
- glEnable(GL_BLEND);
- glBlendFunc(GL_DST_COLOR,GL_ZERO);
- glLoadIdentity();
- glTranslatef(-0.0f,0.0f,-6.0f);
- glBindTexture(GL_TEXTURE_2D, texture[2]);//选定mask jpg
- glBegin(GL_QUADS);
- glTexCoord2f( 0.0f, 1.0f ); glVertex3f( -1.0f, -1.0f, 1.0f );
- glTexCoord2f( 1.0f, 1.0f ); glVertex3f( 1.0f, -1.0f, 1.0f );
- glTexCoord2f( 1.0f, 0.0f ); glVertex3f( 1.0f, 1.0f, 1.0f );
- glTexCoord2f( 0.0f, 0.0f ); glVertex3f( -1.0f, 1.0f, 1.0f );
- glEnd();
- //画人物
- glBlendFunc(GL_ONE, GL_ONE);
- glBindTexture(GL_TEXTURE_2D, texture[1]); // 人物纹理
- glBegin(GL_QUADS);
- glTexCoord2f( 0.0f, 1.0f ); glVertex3f( -1.0f, -1.0f, 1.0f );
- glTexCoord2f( 1.0f, 1.0f ); glVertex3f( 1.0f, -1.0f, 1.0f );
- glTexCoord2f( 1.0f, 0.0f ); glVertex3f( 1.0f, 1.0f, 1.0f );
- glTexCoord2f( 0.0f, 0.0f ); glVertex3f( -1.0f, 1.0f, 1.0f );
- glEnd();
- glDisable(GL_BLEND);
- glEnable(GL_DEPTH_TEST);
- glFlush();
- return 0;
- }
复制代码 为了装《美少女梦工场5》,我把vc2005给删了,这是用d语言写的。 [s:2]
这东西的编译器才20+m,比庞然大物vc小巧多了,甚至比mingw还小
大体的流程就是这样,具体代码和c的也是差不多的,可以平移。 |
|