混合操作

  混合.在模板操作之后.代码内容是先一个小三角形,再一个大三角形.这块摆弄得还不麻利,先这样.

//	Blending.cpp -- 2013/11/21-20:58
#include "stdafx.h"
#include <GLTools.h>            
#include <GLShaderManager.h>    

#define FREEGLUT_STATIC
#include <GL/glut.h>            

GLBatch	smallTriangleBatch;
GLBatch bigTriangleBatch;
GLShaderManager	shaderManager;

void ChangeSize(int w, int h)
{
	glViewport(0, 0, w, h);
}

void SetupRC()
{
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f );

	shaderManager.InitializeStockShaders();
	
	GLfloat vSmallVerts[] = { -0.5f, 0.0f, 0.0f, 
		0.5f, 0.0f, 0.0f,
		0.0f, 0.5f, 0.0f };

	smallTriangleBatch.Begin(GL_TRIANGLES, 3);
	smallTriangleBatch.CopyVertexData3f(vSmallVerts);
	smallTriangleBatch.End();

	GLfloat vBigVerts[] = { -1.0f, 0.0f, 0.0f, 
		1.0f, 0.0f, 0.0f,
		0.0f, 1.0f, 0.0f };

	bigTriangleBatch.Begin(GL_TRIANGLES, 3);
	bigTriangleBatch.CopyVertexData3f(vBigVerts);
	bigTriangleBatch.End();

	glEnable(GL_BLEND);

}

void RenderScene(void)
{
	glClear(GL_COLOR_BUFFER_BIT);

	//	R = Rsrc * Sr㈠ + Rdst * Dr㈡
	//	G = Gsrc * Sg㈠ + Gdst * Dg㈡
	//	B = Bsrc * Sb㈠ + Bdst * Db㈡
	//	A = Asrc * Sa㈢ + Adst * Da㈣
	glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD) ;
	//	㈠:GL_SRC_ALPHA
	//	㈡:GL_DST_ALPHA
	//	㈢:GL_SRC_ALPHA
	//	㈣:GL_DST_ALPHA
	glBlendFuncSeparate(GL_SRC_ALPHA, GL_DST_ALPHA, GL_SRC_ALPHA, GL_DST_ALPHA) ;

	GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
	shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
	smallTriangleBatch.Draw();

	GLfloat vGreen[] = {0, 1.0f, 0, 0.5f} ;
	shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vGreen) ;
	bigTriangleBatch.Draw() ;
	
	glutSwapBuffers();
}

int main(int argc, char* argv[])
{
	gltSetWorkingDirectory(argv[0]);

	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
	glutInitWindowSize(800, 600);
	glutCreateWindow("Triangle");
	glutReshapeFunc(ChangeSize);
	glutDisplayFunc(RenderScene);

	GLenum err = glewInit();
	if (err != GLEW_OK)
	{
		fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
		return 1;
	}

	SetupRC();

	glutMainLoop();

	return 0;
}

  白天看搜狐畅游发布了商业化引擎,据说是开源的,希望能开源.界面上看跟unity差不多,其实之前就有预感,应该差不多,还是都这样的,我确实没用过别的引擎,过一段有时间研究一下UE,据说个人用户免费,而且手头也有早期的UE源代码.也不知道国内商业化引擎出现之后会出现怎样的变化,如果畅游能把这一块做好,似乎就会有更少的人去做引擎了,起码小企业不会.渐渐脑袋想的不局限于程序上的事情了.大牛这么多,我要加油啊~

你可能感兴趣的:(混合操作)