3D Graphics Programming with QuickDraw 3D

8 Summary of Light Objects

8 C Summary

8 Constants

Light Types

#define kQ3LightTypeAmbient             Q3_OBJECT_TYPE('a','m','b','n')
#define kQ3LightTypeDirectional             Q3_OBJECT_TYPE('d','r','c','t')
#define kQ3LightTypePoint             Q3_OBJECT_TYPE('p','n','t','l')
#define kQ3LightTypeSpot             Q3_OBJECT_TYPE('s','p','o','t')

Light Attenuation Values

typedef enum TQ3AttenuationType {
 kQ3AttenuationTypeNone,
 kQ3AttenuationTypeInverseDistance,
 kQ3AttenuationTypeInverseDistanceSquared
} TQ3AttenuationType;

Light Fall-Off Values

typedef enum TQ3FallOffType {
 kQ3FallOffTypeNone,
 kQ3FallOffTypeLinear,
 kQ3FallOffTypeExponential,
 kQ3FallOffTypeCosine
} TQ3FallOffType;

8 Data Types

Light Data Structure

typedef struct TQ3LightData {
 TQ3Boolean         isOn;
 float         brightness;
 TQ3ColorRGB         color;
} TQ3LightData;

Directional Light Data Structure

typedef struct TQ3DirectionalLightData {
 TQ3LightData         lightData;
 TQ3Boolean         castsShadows;
 TQ3Vector3D         direction;
} TQ3DirectionalLightData;

Point Light Data Structure

typedef struct TQ3PointLightData {
 TQ3LightData         lightData;
 TQ3Boolean         castsShadows;
 TQ3AttenuationType         attenuation;
 TQ3Point3D         location;
} TQ3PointLightData;

Spot Light Data Structure

typedef struct TQ3SpotLightData {
 TQ3LightData         lightData;
 TQ3Boolean         castsShadows;
 TQ3AttenuationType         attenuation;
 TQ3Point3D         location;
 TQ3Vector3D         direction;
 float         hotAngle;
 float         outerAngle;
 TQ3FallOffType         fallOff;
} TQ3SpotLightData;

8 Light Objects Routines

Managing Lights

TQ3ObjectType Q3Light_GetType (TQ3LightObject light);
TQ3Status Q3Light_GetState (TQ3LightObject light, TQ3Boolean *isOn);
TQ3Status Q3Light_SetState (TQ3LightObject light, TQ3Boolean isOn);
TQ3Status Q3Light_GetBrightness (
TQ3LightObject light, float *brightness);
TQ3Status Q3Light_SetBrightness (
TQ3LightObject light, float brightness);
TQ3Status Q3Light_GetColor (TQ3LightObject light, TQ3ColorRGB *color);
TQ3Status Q3Light_SetColor (TQ3LightObject light, 
const TQ3ColorRGB *color);
TQ3Status Q3Light_GetData (TQ3LightObject light, 
TQ3LightData *lightData);
TQ3Status Q3Light_SetData (TQ3LightObject light, 
const TQ3LightData *lightData);

Managing Ambient Light

TQ3LightObject Q3AmbientLight_New (
const TQ3LightData *lightData);
TQ3Status Q3AmbientLight_GetData (
TQ3LightObject light, 
TQ3LightData *lightData);
TQ3Status Q3AmbientLight_SetData (
TQ3LightObject light, 
const TQ3LightData *lightData);

Managing Directional Lights

TQ3LightObject Q3DirectionalLight_New (
const TQ3DirectionalLightData *directionalLightData);
TQ3Status Q3DirectionalLight_GetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean *castsShadows);
TQ3Status Q3DirectionalLight_SetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean castsShadows);
TQ3Status Q3DirectionalLight_GetDirection (
TQ3LightObject light, 
TQ3Vector3D *direction);
TQ3Status Q3DirectionalLight_SetDirection (
TQ3LightObject light, 
const TQ3Vector3D *direction);
TQ3Status Q3DirectionalLight_GetData (
TQ3LightObject light, 
TQ3DirectionalLightData *directionalLightData);
TQ3Status Q3DirectionalLight_SetData (
TQ3LightObject light, 
const TQ3DirectionalLightData *directionalLightData);

Managing Point Lights

TQ3LightObject Q3PointLight_New (const TQ3PointLightData *pointLightData);
TQ3Status Q3PointLight_GetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean *castsShadows);
TQ3Status Q3PointLight_SetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean castsShadows);
TQ3Status Q3PointLight_GetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType *attenuation);
TQ3Status Q3PointLight_SetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType attenuation);
TQ3Status Q3PointLight_GetLocation (
TQ3LightObject light, 
TQ3Point3D *location);
TQ3Status Q3PointLight_SetLocation (
TQ3LightObject light, 
const TQ3Point3D *location);
TQ3Status Q3PointLight_GetData (TQ3LightObject light, 
TQ3PointLightData *pointLightData);
TQ3Status Q3PointLight_SetData (TQ3LightObject light, 
const TQ3PointLightData *pointLightData);

Managing Spot Lights

TQ3LightObject Q3SpotLight_New (const TQ3SpotLightData *spotLightData);
TQ3Status Q3SpotLight_GetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean *castsShadows);
TQ3Status Q3SpotLight_SetCastShadowsState (
TQ3LightObject light, 
TQ3Boolean castsShadows);
TQ3Status Q3SpotLight_GetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType *attenuation);
TQ3Status Q3SpotLight_SetAttenuation (
TQ3LightObject light, 
TQ3AttenuationType attenuation);
TQ3Status Q3SpotLight_GetLocation (
TQ3LightObject light, 
TQ3Point3D *location);
TQ3Status Q3SpotLight_SetLocation (
TQ3LightObject light, 
const TQ3Point3D *location);
TQ3Status Q3SpotLight_GetDirection (
TQ3LightObject light, 
TQ3Vector3D *direction);
TQ3Status Q3SpotLight_SetDirection (
TQ3LightObject light, 
const TQ3Vector3D *direction);
TQ3Status Q3SpotLight_GetHotAngle (
TQ3LightObject light, float *hotAngle);
TQ3Status Q3SpotLight_SetHotAngle (
TQ3LightObject light, float hotAngle);
TQ3Status Q3SpotLight_GetOuterAngle (
TQ3LightObject light, float *outerAngle);
TQ3Status Q3SpotLight_SetOuterAngle (
TQ3LightObject light, float outerAngle);
TQ3Status Q3SpotLight_GetFallOff (
TQ3LightObject light, 
TQ3FallOffType *fallOff);
TQ3Status Q3SpotLight_SetFallOff (
TQ3LightObject light, 
TQ3FallOffType fallOff);
TQ3Status Q3SpotLight_GetData (TQ3LightObject light, 
TQ3SpotLightData *spotLightData);
TQ3Status Q3SpotLight_SetData (TQ3LightObject light, 
const TQ3SpotLightData *spotLightData);

8 Notices
kQ3NoticeInvalidAttenuationTypeUsingInternalDefaultsAttenuation type is invalid

8 - C Summary
8 - Constants
Light Types
Light Attenuation Values
Light Fall-Off Values
8 - Data Types
Light Data Structure
Directional Light Data Structure
Point Light Data Structure
Spot Light Data Structure
8 - Light Objects Routines
Managing Lights
Managing Ambient Light
Managing Directional Lights
Managing Point Lights
Managing Spot Lights
8 - Notices

3D Graphics Programming with QuickDraw 3D - 16 OCT 1995

© Apple Computer, Inc.

Let us know what you think of these prototype pages.

Generated with Harlequin WebMaker