microsoft foundation classes 3
TRANSCRIPT
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 1/26
80
6.5 OpenGL ProgrammingTool to Build and Display Complex 3DScenesGL ± High-End Graphics Processing 1980s ± Silicon Graphics ± User Interface Management ± UNIX and X WindowOpen GL ± International Standard
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 2/26
81
Core TermsModelPolygons ± Wireframe
± Shaded ± Texture-mappingNormal
TranslationRotationScaling
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 3/26
82
GL_LINESvoid DrawGLSquare( ) {
glBegin( GL_LINES );glVertex3f( -5.0f, 5.0f, 0.0f );glVertex3f( -5.0f, -5.0f, 0.0f );glVertex3f( -5.0f, -5.0f, 0.0f );glVertex3f( 5.0f, -5.0f, 0.0f );glVertex3f( 5.0f, -5.0f, 0.0f );glVertex3f( 5.0f, 5.0f, 0.0f );glVertex3f( -5.0f, 5.0f, 0.0f );
glEnd( );}
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 4/26
83
GL_POLYGONvoid DrawSquarePatch( ) {
glBegin( GL_POLYGON )glVertex3f( 5.0f, 5.0f, 0.0f );
glVertex3f( -5.0f, 5.0f, 0.0f );glVertex3f( -5.0f, -5.0f, 0.0f );glVertex3f( 5.0f, -5.0f, 0.0f );glNormal3f( 0.0f, 0.0f, 1.0f );
glEnd( );}
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 5/26
84
Viewing Frustrum
x
y
z
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 6/26
85
LightAmbient LightDiffuse Light
Specular LightLight Intensity Equation
§ yy!!
1
0])()([m
j
n j s jd aa V R K i N K I K I
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 7/26
86
Examples of OpenGL Light
CommandsGLfloat fLight[4] = { 1.0f, 1.0f, 1.0f,
1.0f };glLightfv( GL_LIGHT0, GL_AMBIENT, fLight );glLightfv( GL_LIGHT0, GL_DIFFUSE, fLight );glLightfv( GL_LIGHT0, GL_SPECULAR,
fLight );glEnable( GL_DEPTH_TEST );glEnable( GL_LIGHT0 );glDisable( GL_LIGHT0 );glDisable( GL_LIGHTING );
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 8/26
87
Object Material PropertiesColor Properties ± How much light it reflects ± How it handles specular light
± How shiny it isExample
Glfloat fMaterial[4] = { 0.0f, 0.0f, 1.0f,1.0f };
glMaterialfv( GL_FRONT,GL_AMBIENT_AND_DIFFUSE, fMaterial );
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 9/26
88
Translation
¼¼¼¼
½
»
¬¬¬¬
-
«
!
¼¼¼¼
½
»
¬¬¬¬
-
«
¼¼¼¼
½
»
¬¬¬¬
-
«
h
z y
x
z y
x
t t
t
z
y
x
'
'
'
11000
100010
001
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 10/26
89
Scaling
¼¼¼¼
½
»
¬¬¬¬
-
«
!
¼¼¼¼
½
»
¬¬¬¬
-
«
¼¼¼¼
½
»
¬¬¬¬
-
«
h
z y
x
z y
x
s s
s
z
y
x
'
'
'
11000
000000
000
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 11/26
90
Matrix Stack void RenderView( ) {
glPushMatrix( );DrawGLSquare( );
glPopMatrix( );glPushMatrix( );
glScalef( 0.5f, 0.5f, 0.0f );glRotatef( 45.0f, 0.0f, 0.0f, 1.0f );DrawGLSquare( );
glPopMatrix( );}
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 12/26
91
OpenGL Data TypesGLbyteGLubyteGLboolean
GLshortGLintGLuintGLfloat
GLdoubleGLvoidHGLRC
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 13/26
92
OpenGL Rendering ContextOpenGL Command
Current OpenGLRendering Context
WindowsDevice Context
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 14/26
93
Three Wiggle FunctionsHGLRC wglCreateContext( HDC hDC );BOOL wglDeleteContext( HGLRC hRC );BOOL wglMakeCurrent( HDC hDC,
HGLRC hRC );
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 15/26
94
PIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), 1,PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,24,
0, 0, 0, 0, 0, 0,// Color bits and shift0, 0, 0, 0, 0, 0, 0, // Alpha and accum
32, // 32-bit depth buffer0, 0, // No stencil or aux bufferPFD_MAIN_PLANE, // Layer type
0, 0, 0, 0 };
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 16/26
95
Integration of OpenGL and MFCCreate your basic MFC application usingthe MFC AppWizardAdd the OpenGL libraries to your project¶s
link list:OpenGL32.lib GLAux.lib GLU32.lib
Add custom view class to your projectIntegrate the custom view class to your applicationBuild your 3D scene
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 17/26
96
TestOpenGLSDIAdd CGLView Class to the project
# include ³ GLView.h ´
Modify the view class to inherit fromCGLView ± Search for, and replace, every mention of the
view class¶s original base class with CGLViewOnDraw( ) Handler
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 18/26
97
TestOpenGLMDI
MDIAdd CGLView Class to the project
# include ³ GLView.h ´
Modify the view class to inherit fromCGLView ± Search for, and replace, every mention of
the view class¶s original base class with
CGLViewOnDraw( ) Handler Proportional Display
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 19/26
98
Demos of OpenGL CapabilitiesGLObjectGLSceneGLTexcube
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 20/26
99
6.6 Playing SoundSound Effects:
.wavMIDI Music:
.mid
: - -->
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 21/26
100
::PlaySound( « )Project/Setting/Link ± Object/Library Modules: winmm.lib
Example:#
include <iostream.h># include <windows.h># include "mmsystem.h"int main( )
{::PlaySound("C:\\Windows\\Media\\
ding.wav", NULL, SND_SYNC );}
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 22/26
101
Playing MIDI by MCI# include <iostream.h># include <windows.h># include "mmsystem.h"
void main( ){MCI_OPEN_PARMS mciOpenParms;MCI_PLAY_PARMS mciPlayParms;
mciOpenParms.lpstrDeviceType ="sequencer";
mciOpenParms.lpstrElementName ="C:\\MIDI Files\\ .mid";
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 23/26
102
Playing MIDI by MCI (continue)DWORD mciError = mciSendCommand(NULL,
MCI_OPEN,MCI_OPEN_TYPE |MCI_OPEN_ELEMENT | MCI_WAIT,(DWORD)&mciOpenParms);
UINT deviceID = mciOpenParms.wDeviceID;mciError = mciSendCommand(deviceID,
MCI_PLAY,MCI_WAIT,(DWORD)&mciPlayParms);
if (!mciError)mciError = mciSendCommand(deviceID,
MCI_CLOSE, 0, NULL);}
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 24/26
103
A Sample WAVE File FormatSize inBytes Contents Comments4 ³RIFF´ One byte contains one charcter 4 400036 file size minus 8 bytes4 ³WAVE´ fccType
4 ³fmt ³ Notice the blank 4 16 WAVE format chunk is 16
bytes2 1 1 represents PCM format2 2 number of channels4 44100 Sampling rate4 176400 nAvgBytesPerSec
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 25/26
104
A Sample WAVE File Format(continue)
Size inBytes Contents Comments2 2 Bytes per sample
2 16 wBitsPerSample4 ³data´4 400000 size of wave dataDepends on data digitized audio data
8/9/2019 Microsoft Foundation Classes 3
http://slidepdf.com/reader/full/microsoft-foundation-classes-3 26/26
105
Homework#3Revise your Homework#1 program into aWindow program. Of course, you may addor reduce capabilities.