天天看点

opengl之混合例子

#include <iostream>
#include <gl/glew.h>
#include <gl/glut.h>

using namespace std;
#pragma  comment(lib,"opengl32.lib")
#pragma  comment(lib,"glut32.lib")
#pragma  comment(lib,"glu32.lib")
#pragma  comment(lib,"glew32.lib")
void init()
{
	GLenum err=glewInit();
	if(err!=GLEW_OK){
		cout<<"glew初始化错误"<<endl;
		return;
	}
	glClearColor(0.0,0.0,0.0,0.0);
	glShadeModel(GL_FLAT);
	glEnable(GL_BLEND);
	glBlendFunc(GL_ONE,GL_ONE);
	
}

void display()
{
		glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0,1.0,0.0);
	glRectf(-0.3,-0.3,0.1,0.1);
	glColor3f(0.0,1.0,1.0);
	glRectf(0.0,0.0,0.4,0.4);
	glFlush();

}
void keyboard(unsigned char key,int x,int y)
{
	switch(key)
	{
	case 'a':
	case 'A':
		glBlendEquation(GL_FUNC_ADD);
		break;
	case 's':
	case 'S':
		glBlendEquation(GL_FUNC_SUBTRACT);
		break;
	case 'e':
         case 'E':
           
exit(0);	
           
}
	glutPostRedisplay();
	
}
int main(int argc,char** argv)
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
	glutInitWindowSize(500,500);
	glutInitWindowPosition(100,100);
	glutCreateWindow(argv[0]);
	init();
	glutDisplayFunc(display);

	glutKeyboardFunc(keyboard);
	glutMainLoop();
	return 0;

}
           
opengl之混合例子
opengl之混合例子

其实这么简单的程序也还是遇到问题的。。主要是关于opengl扩展的问题,其实在windows提供给我们的只有openg1.1的功能,opengl1.1以上的功能我们并不能用。具体体现在这个程序中的glBlendEquation函数,具体解决方案请看下一篇。。。。

上一篇: OpenGL混合

继续阅读