关闭

位图和模型颜色混合(opengl)

标签: 三维opengl纹理混合
269人阅读 评论(0) 收藏 举报
分类:
int InitGL(GLvoid) // All Setup For OpenGL Goes Here
{
if (!LoadGLTextures()) // Jump To Texture Loading Routine
{
return FALSE; // If Texture Didn't Load Return FALSE
}


glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background
glClearDepth(1.0f); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations


glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light
glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light
glEnable(GL_LIGHT1); // Enable Light One

// 这里是模型颜色
glColor4f(1.0f, 0.0f, 1.0f, 0.5); // Full Brightness.  50% Alpha
glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Set The Blending Function For Translucency


return TRUE; // Initialization Went OK

}



int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity(); // Reset The View
glTranslatef(0.0f,0.0f,z);


glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);


glBindTexture(GL_TEXTURE_2D, texture[filter]);


glBegin(GL_QUADS);
// Front Face
glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
// Back Face
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
// Top Face
glNormal3f( 0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
// Bottom Face
glNormal3f( 0.0f,-1.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
// Right face
glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
// Left Face
glNormal3f(-1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
glEnd();


xrot+=xspeed;
yrot+=yspeed;
return TRUE; // Keep Going
}

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

OpenGL实现颜色混合

在Opengl中,我们两个物体如果叠在一起,想看到他们混合后的颜色就可以利用ta
  • ganpengjin1
  • ganpengjin1
  • 2014-06-09 14:31
  • 1885

OpenGL中的颜色混合功能(一)

OpenGL中的颜色混合功能(一)           我们知道,材料属性和光照参数可以极大地增加图形的逼真度,但除此之外,我们在对现实世界进行建模时,有许多效果是通过混合颜色的方式实现的。透明的物体,像是玻璃水杯,在它后面发射过来的光...
  • Haohan_Meng
  • Haohan_Meng
  • 2015-01-11 20:28
  • 2524

颜色混合opengl

分类: opengl2007-07-20 15:32 4966人阅读 评论(11) 收藏 举报 dstblendbuffer测试 混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过...
  • microsoftwin32
  • microsoftwin32
  • 2014-08-22 20:09
  • 385

OpenGL——颜色混合 glBlendFunc函数

参考来源:http://www.cnblogs.com/ylwn817/archive/2012/09/07/2675285.html (PS:非常感谢参考来源中笔者的详细讲解,加深了我对该函数的了解。有兴趣者可以去访问之) 前言:今天看到了OpenGL中混合效果,特此做了一番学习...
  • u012209626
  • u012209626
  • 2015-05-15 22:30
  • 545

计算机图形学(二)输出图元_14_OpenGL像素阵列函数_1_位图函数

OpenGL中有两个函数可用于定义矩形阵列的形状或图案。一个是位图,另一个是像素图。OpenGL也提供若干的函数用于存储、复制及管理像素值阵列。函数中的参数width和height分别给出阵列bitShape的列数和行数。bitShape的每一元素赋值为0或1。值为1表示对应像素用前面设定的颜色显示...
  • heyuchang666
  • heyuchang666
  • 2016-05-23 21:24
  • 4821

位图、图像(openGL)

0.概述 相对于几何图元而言的;opengl除了可以处理几何图元外,还可以处理位图和图像。位图和图像数据都是采用矩阵的像素数组的格式,它们之间的唯一区别在于位图的每一个像素是由一个位的信息组成的,而图像的每个像素一般包含了多个位。 另外opengl并不支持从文件中读取像素和图像以及把像素和图像保...
  • ChinaJane163
  • ChinaJane163
  • 2016-01-05 14:17
  • 1949

颜色混合opengl

转载地址:http://blog.csdn.net/aurora_mylove/article/details/1700540 混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。 假设我们需要绘制这样一个...
  • sz76211822
  • sz76211822
  • 2017-02-26 12:19
  • 130

颜色混合OpenGL

混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。 假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将要绘制上...
  • ruihaha
  • ruihaha
  • 2014-11-05 14:45
  • 508

OpenGL颜色混合

混合是一种常用的技巧,通常可以用来实现半透明。但其实它也是十分灵活的,你可以通过不同的设置得到不同的混合结果,产生一些有趣或者奇怪的图象。 混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。 假设我们需要...
  • anye3000
  • anye3000
  • 2013-09-23 15:15
  • 830

OpenGL: 颜色混合

代码如下:#include #pragma comment(lib, "glut32.lib") void Initialization() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glEnable(GL_BLEND);//启用混...
  • Augusdi
  • Augusdi
  • 2014-03-05 09:21
  • 986
    个人资料
    • 访问:67802次
    • 积分:1243
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:70篇
    • 译文:0篇
    • 评论:7条
    最新评论