Keywords: Greeting Card/Screen Saver, OpenGL, Texture Map, MCI(MultiMedia), MIDI
To All developers:
I contribute this special gift to all developers around the world to the new millenium. I send all of you my best wishes for a sucessful and wonderful new century I thank you for your willing to share my exciting feeling about this work and the new century I will be very pleased if the knowledge and skill in this work can help you.
Good Luck, Everybody!
The Special Points in the code
1.The texture map
1.1 Process arbitrary size texture image
gluBuild2DMipmaps can process
the texture image which width and heigth are arbitrary
The sample code is:
glEnable(GL_TEXTURE_2D); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); gluBuild2DMipmaps(GL_TEXTURE_2D, 4, m_TexWidth, m_TexHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, m_glTexture);
The parameters in
gluBuild2DMipmaps are similar to
1.2 Animation with texture image
In the scene of this program, the animation of the object "Ball" is realized by "sliding" the texture image. The "Ball" "rotates" by changing its texture coordinates. The details of implementation can be found in
glEllipsoid::SetTexCoord glEllipsoid::DrawObject CGLControl::OnTimer
2. MIDI music play
In this program, class
the MCI functions to play MIDI/Wave format file. To play MIDI music, set the parameter
"lpstrDeviceType" of MCI_OPEN_PARMS data to "sequencer"
3. Put resource in executable file
For easy to deploy the program, I put the texture image and MIDI data into .rc file and compile them. The texture image can be found in the section of "DIB" and MIDI data in the section of "MIDI" in the "greet.rc" file.
When the program need to get the texture image or MIDI data, the program can load these data from resource, then save them as temprary disk files so that other functions can read texture image or MIDI data correctly from the temprary disk files. When the program is over, the temprary disk files will be delete automatically.
The implementations are in
CMCIPlayer::LoadMIDIFile CMCIPlayer::MoveMIDIFile glEllipsoid::BuildBMPTexture glCube::BuildBMPTexture
DownloadsDownload demo project - 762 Kb
Download source - 675 Kb