void Bullet::Draw() { SetUseLighting(FALSE); //SetUseLighting(TRUE); switch (_bulletType) { case BULLET_TYPE_ENEMY: MV1SetScale(ResourceHandles::getResourceHandles().EnemyBulletHandle, VGet(_size, _size, _size)); MV1SetPosition(ResourceHandles::getResourceHandles().EnemyBulletHandle, _translation); MV1DrawModel(ResourceHandles::getResourceHandles().EnemyBulletHandle); break; case BULLET_TYPE_PLAYER: MV1SetScale(ResourceHandles::getResourceHandles().PlayerBulletHandle, VGet(_size, _size, _size)); MV1SetPosition(ResourceHandles::getResourceHandles().PlayerBulletHandle, _translation); MV1DrawModel(ResourceHandles::getResourceHandles().PlayerBulletHandle); break; case BULLET_TYPE_PLAYER_HORMING: MV1SetScale(ResourceHandles::getResourceHandles().HormingBulletHandle, VGet(_size, _size, _size)); MV1SetPosition(ResourceHandles::getResourceHandles().HormingBulletHandle, _translation); MV1DrawModel(ResourceHandles::getResourceHandles().HormingBulletHandle); break; default: break; } }
static void Use(const bool use) { SetUseLighting(use); }
void GlfSimpleLightingContext::SetStateFromOpenGL() { // import classic GL light's parameters into shaded lights SetUseLighting(glIsEnabled(GL_LIGHTING)); GfMatrix4d worldToViewMatrix; glGetDoublev(GL_MODELVIEW_MATRIX, worldToViewMatrix.GetArray()); GfMatrix4d viewToWorldMatrix = worldToViewMatrix.GetInverse(); GLint nLights = 0; glGetIntegerv(GL_MAX_LIGHTS, &nLights); GlfSimpleLightVector lights; lights.reserve(nLights); GlfSimpleLight light; for(int i = 0; i < nLights; ++i) { int lightName = GL_LIGHT0 + i; if (glIsEnabled(lightName)) { GLfloat position[4], color[4]; glGetLightfv(lightName, GL_POSITION, position); light.SetPosition(GfVec4f(position)*viewToWorldMatrix); glGetLightfv(lightName, GL_AMBIENT, color); light.SetAmbient(GfVec4f(color)); glGetLightfv(lightName, GL_DIFFUSE, color); light.SetDiffuse(GfVec4f(color)); glGetLightfv(lightName, GL_SPECULAR, color); light.SetSpecular(GfVec4f(color)); lights.push_back(light); } } SetLights(lights); GlfSimpleMaterial material; GLfloat color[4], shininess; glGetMaterialfv(GL_FRONT, GL_AMBIENT, color); material.SetAmbient(GfVec4f(color)); glGetMaterialfv(GL_FRONT, GL_DIFFUSE, color); material.SetDiffuse(GfVec4f(color)); glGetMaterialfv(GL_FRONT, GL_SPECULAR, color); material.SetSpecular(GfVec4f(color)); glGetMaterialfv(GL_FRONT, GL_EMISSION, color); material.SetEmission(GfVec4f(color)); glGetMaterialfv(GL_FRONT, GL_SHININESS, &shininess); // clamp to 0.0001, since pow(0,0) is undefined in GLSL. shininess = std::max(0.0001f, shininess); material.SetShininess(shininess); SetMaterial(material); GfVec4f sceneAmbient; glGetFloatv(GL_LIGHT_MODEL_AMBIENT, &sceneAmbient[0]); SetSceneAmbient(sceneAmbient); }