CSE4030 Introduction to Computer Graphics Dongguk University Jeong-Mo Hong
Week 2 The first step on a journey to the virtual world An introduction to computer graphics and interactive techniques How to start graphics programming
Teaching Assistants Jeong-Hyun Lee H.P. 010 9789-6972 E-mail jhlee@atelierj.pro Sun-Tae Kim H.P. 010 2629-9775 E-mail stkim@atelierj.pro Dong-Ho Park H.P. 010 8975-4130 E-mail dhpark@atelierj.pro
Location Room No.613 DGU Research Institute for Image & Cultural Content Main Bldg.
Lab 2 How to Start Graphics Programming GLUT setup Visual Studio environment setting GLUT API Preparing for a canvas (window) Input devices (keyboard, mouse)
OpenGL Open Graphics Library API for 2D and 3D graphics programming Developed by Silicon Graphics OpenGL 3.0 was released on August 11, 2008 Cross-platform (but MS has D3D) GLUT The OpenGL Utility Toolkit
OpenGL in Windows opengl32.dll in C:\Windows\System32
OpenGL in Windows glu32.dll in C:\Windows\System32
GLUT GL Utility API Documents http://www.opengl.org/resources/libraries/glut/spec3/spec3.html Download GLUT Nate Robin s Homepage Google Nate Robin http://www.xmission.com/~nate/glut.html GLUT for Win32 : glut-3.7.6-bin.zip
GLUT Setup glut binary release glut.def glut.h glut32.dll glut32.lib
GLUT Setup (header) C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include Default include path of Visual Studio 2005 Copy glut.h file to GL directory
GLUT Setup (lib) C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib Default library path of Visual Studio 2005 Copy glut32.lib
GLUT Setup (dll) C:\Windows\System32 Default DLL directory of Windows Copy glut32.dll
Visual Studio
Visual Studio (Project Setting) Create a new project
Visual Studio (Project Setting) C++ - Win32 Win32 Console Application
Visual Studio (Project Setting) Application setting
Visual Studio (Project Setting) Add source code files
Visual Studio (Project Setting) C++ - Code C++ File(.cpp)
Visual Studio (Project Setting) Change project property
Visual Studio (Project Setting) Additional library files for linking Configuration Properties Linker - Input No comma!!! opengl32.lib glu32.lib glut32.lib
Visual Studio (Project Setting)
Visual Studio (Project Setting) Additional library directories Linker General Additional Library Directories
GL Window Creating a window Initialize the background color glclearcolor(glclampf red, Glclmapf green, Glclampf blue, Glclampf alpha) glclearcolor(0, 0, 0, 0) glclearcolor(1, 1, 1, 0)
GL Window [1/2] int main(int argc, char **argv) { glutinit(&argc, argv); glutinitdisplaymode(glut_single GLUT_RGB); glutinitwindowsize(500, 500); glutinitwindowposition(100, 100); glutcreatewindow("gl Sample : Hello!"); glclearcolor(0.0, 0.0, 0.0, 0.0); gluortho2d(0, 500, 500, 0); glutdisplayfunc(display); glutmainloop(); } return 0;
GL Window [2/2] void display() { glclear(gl_color_buffer_bit); glflush(); }
Check List glut.h Is GL\glut.h in one of the include paths? windows.h Required to use GL\GL.h on Windows platform
Build Test Build success Build failure Check if the library files(lib) are in correct directories. Is the DLL fine in system32 directory?
Keyboard Event Keyboard input handlers int main(int argc, char **argv) { // glutdisplayfunc(display); glutkeyboardfunc(keyboard); glutkeyboardupfunc(keyupfunc); // } return 0;
Keyboard Event Test functions for keyboard input void keydownfunc(unsigned char key, int x, int y) { printf( keydown function\n ); } void keyupfunc(unsigned char key, int x, int y) { printf("keyup function ); }
Mouse Event Mouse input handlers int main(int argc, char **argv) { // glutdisplayfunc(display); glutmousefunc(mouse); glutmotionfunc(dragging); glutpassivemotionfunc(motion); } // return 0;
Mouse Event Test functions for mouse input void mouse(int button, int state, int x, int y) { printf( mouse function\n ); } void motion(int x, int y) { printf("motion function\n ); } void dragging(int x, int y) { printf( dragging function\n ); }
Results Expected results
Drawing primitives All drawing codes must be implemented in display function Registered using glutdisplayfunc( ) void display() { glbegin( ); // // codes for drawing here // } glend(); glflush(); glutswapbuffers(); glutpostredisplay();
Drawing - Points glcolor3f(0.0, 0.0, 0.0); glpointsize(5.0); glbegin(gl_points); glvertex3f(0.1, 0.1, 0.0); glvertex3f(0.9, 0.1, 0.0); glvertex3f(0.1, 0.9, 0.0); glend(); vertex position
Drawing - Line GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_LINES GL_LINE_STRIP glcolor3f(0.0, 0.0, 0.0); glbegin(gl_lines); glvertex3f(0.1, 0.1, 0.0); glvertex3f(0.9, 0.1, 0.0); glvertex3f(0.1, 0.9, 0.0); glend(); GL_LINE_LOOP
Assignment Write a visual interactive program Keyboard input (a, s, d, w) Mouse input(move, click)?
Appendix - Environment setting Tools Import and Export Settings Environment setting
Appendix - Environment setting Reset all settings
Appendix - Environment setting Reset settings
Appendix - Environment setting Select Visual C++ Development settings