Introduction to OpenGL Keng Shih-Ling 2003 Spring.

Post on 23-Dec-2015

245 views 0 download

Tags:

Transcript of Introduction to OpenGL Keng Shih-Ling 2003 Spring.

Introduction to OpenGL

Keng Shih-Ling <kensl@csie.nctu.edu.tw>

2003 Spring

ExampleOpenGL example

OpenGL is a Graphics API

A software interface for graphics hardware.Provide the low-level functions to access graphics hardware directly.OpenGL / Direct3DOpenGL functions use the prefix gl.

OpenGL is a Graphics API

Application

GDI

Display Device

OpenGL

Hardware Driver

OpenGL library

Microsoft’s implementation– From Win95 OSR2, Microsoft Windows

ship with OpenGL32.DLL.– For old Win95 users, you still can

download OPENGL95.EXE via Microsoft website.

– Header files and import library files are already included in Win32 Platform SDK.

OpenGL library

Microsoft’s OpenGL32.DLL applies a hardware accelerated driver registered in Registry.

– HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers

– You can search it by using REGEDIT.EXE

API Hierarchy

OpenGL Utility Library

The OpenGL Utility Library(GLU) provides many of the modeling features, such as quadric surfaces and NURBS curves and surfaces. GLU is a standard part of every OpenGL implementationGLU routines use the prefix glu.– gluLookAt( … );– …

Windows system related helper library

For every window system, there is a library that extends the functionality of that window system to support OpenGL rendering. – X Window System -> GLX – Microsoft Windows -> WGL– IBM OS/2 -> PGL

OpenGL Utility Toolkit

The OpenGL Utility Toolkit (GLUT) is a window system-independent toolkit, written by Mark Kilgard, to hide the complexities of differing window system APIs. GLUT routines use the prefix glut.– glutPostRedisplay();– …

OpenGL Utility Toolkit

You can download this toolkit in the following website– Win32

• http://www.xmission.com/~nate/glut.html

– Linux• http://www.mesa3d.org

We focus on this toolkit

Basic Setup (GLUT)

On Microsoft Visual C++ 6:– Put glut.h into <MSVC>/include/GL/– Put glut.lib into <MSVC>/lib/– Put glut32.dll into <window>/System32/

On Microsoft Visual C++ .NET:– Put glut.h into

<MSVC>/platformSDK/include/GL/– Put glut.lib into <MSVC>/platformSDK/lib/– Put glut32.dll into <window>/System32

How to Compile (VC6.0)

On Microsoft Visual C++ 6:– Create a new Project with Win32

Console Application– Open Project Settings dialog and add

opengl32.lib glu32.lib glut32.lib into Link/Objects/library modules.

– Writing your OpenGL code.– Compile it.

How to Compile (.NET)

On Microsoft Visual C++ .NET:– 建立Win32專案– 在應用程式設定,選擇主控台應用程式– 開啟專案屬性,在連結器 /輸入 /其他相依性中輸入 opengl32.lib glu32.lib glut32.lib 。

– Writing your OpenGL code.– Compile it.

How to Compile (.NET)

The Simplest Program#include <GL/glut.h>void GL_display(){

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f, 1.0f, 1.0f);glutSolidCube(1.0);glFlush();

}void GL_reshape(GLsizei w, GLsizei h){

glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, -2.0f, 2.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();

}

The Simplest Program

void main(void){

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutCreateWindow("Sample");glutDisplayFunc(GL_display);glutReshapeFunc(GL_reshape);glutMainLoop();

}

The Simplest Program

Reference

Official site of OpenGL– http://www.opengl.org

Useful Sites– NeHe’s OpenGL Tutorials– The Developer’s Gallery

Reference

Further Reading– OpenGL Programming Guide (Red

Book)– OpenGL Reference Manual (Blue

Book)– OpenGL Super Bible (中文版 )

Any Question?

?