zoukankan      html  css  js  c++  java
  • 读书笔记——添加光照之后再应用纹理贴图以保证镜面亮点

    辅助镜面颜色:在纹理贴图之后再应用镜面亮点。(通过加法而不是乘法。)


    调用

    glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);

    想要恢复则调用

    glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);

    void SetupRC()
    {
    	glClearColor(fLowLight[0],fLowLight[1],fLowLight[2],fLowLight[3]);
    	
    	glClearStencil(0);
    	glStencilFunc(GL_EQUAL,0x0,0x1);
    	glStencilOp(GL_INCR,GL_INCR,GL_INCR);
    
    	glCullFace(GL_BACK);
    	glFrontFace(GL_CCW);
    	glEnable(GL_DEPTH_TEST);
    	glEnable(GL_CULL_FACE);
    	glEnable(GL_MULTISAMPLE_ARB);
    
    	glEnable(GL_LIGHTING);
    	glEnable(GL_LIGHT0);
    
    	glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);//<-------就是这一句啦
    
    	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,fNoLight);
    	glLightfv(GL_LIGHT0,GL_AMBIENT,fLowLight);
    	glLightfv(GL_LIGHT0,GL_DIFFUSE,fBrightLight);
    	glLightfv(GL_LIGHT0,GL_SPECULAR,fBrightLight);
    
    	m3dGetPlaneEquation(mPlaneEquation,vPlanePoints[0],vPlanePoints[1],vPlanePoints[2]);
    	m3dMakePlanarShadowMatrix(mShadowEquation,mPlaneEquation,fLightPos);
    
    	glEnable(GL_COLOR_MATERIAL);
    	glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
    	glMaterialfv(GL_FRONT,GL_SPECULAR,fBrightLight);
    	glMateriali(GL_FRONT,GL_SHININESS,128);
    
    	for (GLint i=0;i<nNumSpheres;i++)
    	{
    		Sphere[i].SetOrigin(((float)((rand() % 400) - 200) * 0.1f), 0.0, (float)((rand() % 400) - 200) * 0.1f);
    	}
    
    	glEnable(GL_TEXTURE_2D);
    	glGenTextures(nNumTexture,unTexturesObj);
    	glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
    	for (GLint i=0;i<nNumTexture;i++)
    	{
    		GLbyte *pBytes;
    		GLint iWidth, iHeight, iComponents;
    		GLenum eFormat;
    		glBindTexture(GL_TEXTURE_2D,unTexturesObj[i]);
    		pBytes=gltLoadTGA(szTextures[i],&iWidth,&iHeight,&iComponents,&eFormat);
    		gluBuild2DMipmaps(GL_TEXTURE_2D,iComponents,iWidth,iHeight,eFormat,GL_UNSIGNED_BYTE,pBytes);
    		free(pBytes);
    
    		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
    		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
    		glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
    	}
    }

  • 相关阅读:
    利用Percona monitoring for zabbix监控MySQL
    SQL Server复制故障(1)
    SQL Server事务复制搭建与同步经验
    达梦7入门技术总结--DCA级别
    机器学习:双聚类算法
    脑洞篇之我们生活在9维世界
    自动化运维:使用flask+mysql+highcharts搭建监控平台
    深度学习:Keras入门(二)之卷积神经网络(CNN)
    深度学习:Keras入门(一)之基础篇
    机器学习:特征选择
  • 原文地址:https://www.cnblogs.com/wlsandwho/p/4202168.html
Copyright © 2011-2022 走看看