34 lines
		
	
	
		
			776 B
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			776 B
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "ogl.h"
							 | 
						||
| 
								 | 
							
								#include <Kore/Math/Vector.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Kore {
							 | 
						||
| 
								 | 
							
									enum LightType { DirectionalLight, PointLight, SpotLight };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									class LightImpl {
							 | 
						||
| 
								 | 
							
									public:
							 | 
						||
| 
								 | 
							
										LightImpl();
							 | 
						||
| 
								 | 
							
										virtual ~LightImpl();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									protected:
							 | 
						||
| 
								 | 
							
										// Submit light parameters to OpenGL (lightID is GL_LIGHT<n> where <n> is in the range [0, 7])
							 | 
						||
| 
								 | 
							
										void submitLightParamsToGL(GLenum lightID) const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// Submit light transformation to OpenGL (lightID is GL_LIGHT<n> where <n> is in the range [0, 7]).
							 | 
						||
| 
								 | 
							
										void submitLightTransformToGL(GLenum lightID) const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										LightType myType;
							 | 
						||
| 
								 | 
							
										vec4 myAmbient;
							 | 
						||
| 
								 | 
							
										vec4 myDiffuse;
							 | 
						||
| 
								 | 
							
										vec4 mySpecular;
							 | 
						||
| 
								 | 
							
										vec4 myPositionOrDirection;
							 | 
						||
| 
								 | 
							
										vec3 mySpotDirection;
							 | 
						||
| 
								 | 
							
										float mySpotExponent;
							 | 
						||
| 
								 | 
							
										float mySpotCutoff;
							 | 
						||
| 
								 | 
							
										float myConstAttn;
							 | 
						||
| 
								 | 
							
										float myLinearAttn;
							 | 
						||
| 
								 | 
							
										float myQuadricAttn;
							 | 
						||
| 
								 | 
							
									};
							 | 
						||
| 
								 | 
							
								}
							 |