半透明对象的镜面反射高光-OpenGL
我正在为我的计算机图形学课程做最后一个项目。这一切都是在OpenGL中完成的。我的项目是模拟水下的气泡。这是不应该是现实的,但是,我已经做了我的项目提案的所有要求,所以我期待做一些更先进的东西 现在,我的泡沫并不现实。它们是半透明的,每个周围都有一个半透明的白色圆圈。使用GL_LIGHT_MODEL_TWO_SIDE、glBlendFunc(GL_SRC_ALPHA、GL_ONE_减去SRC_ALPHA)和GL_POLYGON_SMOOTH计算照明。这给了一个明显的泡沫外观 有一件事,我不能得到,是镜面高光!它们确实存在,但它们是半透明的白色,而不是闪亮表面上真实镜面反射高光的不透明白色 如果我将alpha设置为all 1,则会有漂亮的白色镜面反射高光,但我的对象不再是半透明的 我一直在玩GL_shiness,几乎没有成功 以下是我的照明和材料代码:半透明对象的镜面反射高光-OpenGL,opengl,translucency,specular,Opengl,Translucency,Specular,我正在为我的计算机图形学课程做最后一个项目。这一切都是在OpenGL中完成的。我的项目是模拟水下的气泡。这是不应该是现实的,但是,我已经做了我的项目提案的所有要求,所以我期待做一些更先进的东西 现在,我的泡沫并不现实。它们是半透明的,每个周围都有一个半透明的白色圆圈。使用GL_LIGHT_MODEL_TWO_SIDE、glBlendFunc(GL_SRC_ALPHA、GL_ONE_减去SRC_ALPHA)和GL_POLYGON_SMOOTH计算照明。这给了一个明显的泡沫外观 有一件事,我不能得到
glEnable(GL_LINE_SMOOTH);
glEnable (GL_POLYGON_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glShadeModel(GL_SMOOTH);
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
GLfloat mat_ambient[] = { 0.1, 0.1, 0.1, 0.15 };
GLfloat mat_diffuse[] = { 0.5, 0.95, 0.8, 0.2 };
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_emission[] = { 0.0, 0.0, 0.0, 0.3 };
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, mat_diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 32);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, mat_emission);
有人能提出一种在半透明对象上获得明亮、白色镜面反射高光的方法吗?一个您想要的和您得到的快照可能会帮助我们回答您的问题。您可能需要编写自己的lightning shader。有许多着色器模拟“标准”OpenGL行为,您可以稍微调整它,使受镜面反射影响的颜色变得更加不透明。fragColor=镜面反射*光镜面反射;fragColor.a=长度(fragColor.rgb);诸如此类