0% found this document useful (0 votes)
30 views27 pages

Uas Graf 23118003

The document describes code for drawing basic shapes like rectangles, triangles, and polygons in OpenGL. It includes functions for initializing an OpenGL context, drawing the shapes, and a main loop to process events and redraw. Rectangles, triangles and polygons are drawn to the screen by specifying vertex positions and colors.

Uploaded by

sinthanahak0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views27 pages

Uas Graf 23118003

The document describes code for drawing basic shapes like rectangles, triangles, and polygons in OpenGL. It includes functions for initializing an OpenGL context, drawing the shapes, and a main loop to process events and redraw. Rectangles, triangles and polygons are drawn to the screen by specifying vertex positions and colors.

Uploaded by

sinthanahak0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 27

PERSEGI PANJANG

/**************************

* Includes

**************************/

#include <windows.h>

#include <gl/gl.h>

/**************************

* Function Declarations

**************************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam);

void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);

/**************************

* WinMain

**************************/
int WINAPI WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int iCmdShow)

WNDCLASS wc;

HWND hWnd;

HDC hDC;

HGLRC hRC;

MSG msg;

BOOL bQuit = FALSE;

float theta = 0.0f;

/* register window class */

wc.style = CS_OWNDC;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor (NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);

wc.lpszMenuName = NULL;

wc.lpszClassName = "GLSample";
RegisterClass (&wc);

/* create main window */

hWnd = CreateWindow (

"GLSample", "OpenGL Sample",

WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,

0, 0, 256, 256,

NULL, NULL, hInstance, NULL);

/* enable OpenGL for the window */

EnableOpenGL (hWnd, &hDC, &hRC);

/* program main loop */

while (!bQuit)

/* check for messages */

if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))

/* handle or dispatch messages */

if (msg.message == WM_QUIT)

bQuit = TRUE;

else

{
TranslateMessage (&msg);

DispatchMessage (&msg);

else

/* OpenGL animation code goes here */

glClearColor (0.0, 0.0, 0.0, 0.0); //membuat warna latar belakang menjadi hitam

glClear (GL_COLOR_BUFFER_BIT); //membersikan layar

glColor3f (1.0, 0.0, 0.0); //untuk menentukan warna garis atau titik(warna merah)

glBegin (GL_POLYGON); // Menggambar poligon tunggal.

glVertex2f(-0.7,-0.5); //untuk menentukan posisi sebuah garis

glVertex2f(-0.7,0.5); // untuk menentukan posisi sebuah garis

glVertex2f(0.7,0.5); // untuk menentukan posisi sebuah garis

glVertex2f(0.7,-0.5); // untuk menentukan posisi sebuah garis

glEnd (); //fungsi akhir perintah OpenGl

glPopMatrix (); //Memanggil suatu fungsi yang telah disimpan pada glPushMatrix

SwapBuffers (hDC); //Digunakan untuk menukar bagian belakang buffer menjadi buffer layar

theta += 1.0f;

Sleep (1);

}
/* shutdown OpenGL */

DisableOpenGL (hWnd, hDC, hRC);

/* destroy the window explicitly */

DestroyWindow (hWnd);

return msg.wParam;

/********************

* Window Procedure

********************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam)

switch (message)

case WM_CREATE:

return 0;

case WM_CLOSE:
PostQuitMessage (0);

return 0;

case WM_DESTROY:

return 0;

case WM_KEYDOWN:

switch (wParam)

case VK_ESCAPE:

PostQuitMessage(0);

return 0;

return 0;

default:

return DefWindowProc (hWnd, message, wParam, lParam);

/*******************

* Enable OpenGL

*******************/
void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC)

PIXELFORMATDESCRIPTOR pfd;

int iFormat;

/* get the device context (DC) */

*hDC = GetDC (hWnd);

/* set the pixel format for the DC */

ZeroMemory (&pfd, sizeof (pfd));

pfd.nSize = sizeof (pfd);

pfd.nVersion = 1;

pfd.dwFlags = PFD_DRAW_TO_WINDOW |

PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;

pfd.iPixelType = PFD_TYPE_RGBA;

pfd.cColorBits = 24;

pfd.cDepthBits = 16;

pfd.iLayerType = PFD_MAIN_PLANE;

iFormat = ChoosePixelFormat (*hDC, &pfd);

SetPixelFormat (*hDC, iFormat, &pfd);

/* create and enable the render context (RC) */

*hRC = wglCreateContext( *hDC );

wglMakeCurrent( *hDC, *hRC );


}

/******************

* Disable OpenGL

******************/

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC)

wglMakeCurrent (NULL, NULL);

wglDeleteContext (hRC);

ReleaseDC (hWnd, hDC);

}
SEGITIGA
/**************************

* Includes

**************************/

#include <windows.h>

#include <gl/gl.h>

/**************************

* Function Declarations

**************************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam);

void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);

/**************************

* WinMain

**************************/
int WINAPI WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int iCmdShow)

WNDCLASS wc;

HWND hWnd;

HDC hDC;

HGLRC hRC;

MSG msg;

BOOL bQuit = FALSE;

float theta = 0.0f;

/* register window class */

wc.style = CS_OWNDC;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor (NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);

wc.lpszMenuName = NULL;

wc.lpszClassName = "GLSample";
RegisterClass (&wc);

/* create main window */

hWnd = CreateWindow (

"GLSample", "OpenGL Sample",

WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,

0, 0, 256, 256,

NULL, NULL, hInstance, NULL);

/* enable OpenGL for the window */

EnableOpenGL (hWnd, &hDC, &hRC);

/* program main loop */

while (!bQuit)

/* check for messages */

if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))

/* handle or dispatch messages */

if (msg.message == WM_QUIT)

bQuit = TRUE;

else

{
TranslateMessage (&msg);

DispatchMessage (&msg);

else

/* OpenGL animation code goes here */

glClearColor (0.0, 0.0, 0.0, 0.0); // membuat gambar latar belakang menjadi hitam

glClear (GL_COLOR_BUFFER_BIT); // membersikan layar

glColor3f (1.0,0.0,0.0); // untuk menentukan warna garis atau titik

glBegin(GL_TRIANGLES); //menggambar segitiga

glVertex2f(0.0,1.0); // untuk menentukan posisi sebuah garis

glVertex2f(0.87,-0.5); // untuk menentukan posisi sebuah garis

glVertex2f(-0.87,-0.5); // untuk menentukan posisi sebuah garis

//glVertex2f(0.7,-0.5); // untuk menentukan posisi sebuah garis

glEnd (); // fungsi akhir perintah OpenGl

glPopMatrix (); // Memanggil suatu fungsi yang telah disimpan pada glPushMatrix

SwapBuffers (hDC); // Digunakan untuk menukar bagian belakang buffer menjadi buffer layar

theta += 1.0f;
Sleep (1);

/* shutdown OpenGL */

DisableOpenGL (hWnd, hDC, hRC);

/* destroy the window explicitly */

DestroyWindow (hWnd);

return msg.wParam;

/********************

* Window Procedure

********************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam)

switch (message)

{
case WM_CREATE:

return 0;

case WM_CLOSE:

PostQuitMessage (0);

return 0;

case WM_DESTROY:

return 0;

case WM_KEYDOWN:

switch (wParam)

case VK_ESCAPE:

PostQuitMessage(0);

return 0;

return 0;

default:

return DefWindowProc (hWnd, message, wParam, lParam);

/*******************
* Enable OpenGL

*******************/

void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC)

PIXELFORMATDESCRIPTOR pfd;

int iFormat;

/* get the device context (DC) */

*hDC = GetDC (hWnd);

/* set the pixel format for the DC */

ZeroMemory (&pfd, sizeof (pfd));

pfd.nSize = sizeof (pfd);

pfd.nVersion = 1;

pfd.dwFlags = PFD_DRAW_TO_WINDOW |

PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;

pfd.iPixelType = PFD_TYPE_RGBA;

pfd.cColorBits = 24;

pfd.cDepthBits = 16;

pfd.iLayerType = PFD_MAIN_PLANE;

iFormat = ChoosePixelFormat (*hDC, &pfd);

SetPixelFormat (*hDC, iFormat, &pfd);


/* create and enable the render context (RC) */

*hRC = wglCreateContext( *hDC );

wglMakeCurrent( *hDC, *hRC );

/******************

* Disable OpenGL

******************/

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC)

wglMakeCurrent (NULL, NULL);

wglDeleteContext (hRC);

ReleaseDC (hWnd, hDC);

}
POLIGON
/**************************

* Includes

**************************/

#include <windows.h>

#include <gl/gl.h>

/**************************

* Function Declarations

**************************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam);

void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);

/**************************

* WinMain

*
**************************/

int WINAPI WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int iCmdShow)

WNDCLASS wc;

HWND hWnd;

HDC hDC;

HGLRC hRC;

MSG msg;

BOOL bQuit = FALSE;

float theta = 0.0f;

/* register window class */

wc.style = CS_OWNDC;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor (NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);

wc.lpszMenuName = NULL;
wc.lpszClassName = "GLSample";

RegisterClass (&wc);

/* create main window */

hWnd = CreateWindow (

"GLSample", "OpenGL Sample",

WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,

0, 0, 256, 256,

NULL, NULL, hInstance, NULL);

/* enable OpenGL for the window */

EnableOpenGL (hWnd, &hDC, &hRC);

/* program main loop */

while (!bQuit)

/* check for messages */

if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))

/* handle or dispatch messages */

if (msg.message == WM_QUIT)

bQuit = TRUE;

else
{

TranslateMessage (&msg);

DispatchMessage (&msg);

else

/* OpenGL animation code goes here */

glClearColor (0.0f, 0.0f, 0.0f, 0.0f); // membuat warna latar belakang menjadi hitam

glClear (GL_COLOR_BUFFER_BIT); // membersikan layar

glColor3f (1.0f,1.0f,1.0f); // untuk menentukan warna garis atau titik

glBegin(GL_POLYGON); // Menggambar poligon tunggal

glVertex2f(-0.5,-0.5); // untuk menentukan posisi sebuah garis

glVertex2f(-0.75,0); // untuk menentukan posisi sebuah garis

glVertex2f(-0.5,0.5); // untuk menentukan posisi sebuah garis

glVertex2f(0,0.75); // untuk menentukan posisi sebuah garis

glVertex2f(0.5,0.5); // untuk menentukan posisi sebuah garis

glVertex2f(0.75,0); // untuk menentukan posisi sebuah garis

glVertex2f(0.5,-0.5); // untuk menentukan posisi sebuah garis

glVertex2f(0,-0.75); // untuk menentukan posisi sebuah garis

glEnd (); // fungsi akhir perintah OpenGl

glPopMatrix (); // Memanggil suatu fungsi yang telah disimpan pada glPushMatrix
SwapBuffers (hDC); // Digunakan untuk menukar bagian belakang buffer menjadi buffer
layar

theta += 1.0f;

Sleep (1);

/* shutdown OpenGL */

DisableOpenGL (hWnd, hDC, hRC);

/* destroy the window explicitly */

DestroyWindow (hWnd);

return msg.wParam;

/********************

* Window Procedure

********************/

LRESULT CALLBACK WndProc (HWND hWnd, UINT message,

WPARAM wParam, LPARAM lParam)

{
switch (message)

case WM_CREATE:

return 0;

case WM_CLOSE:

PostQuitMessage (0);

return 0;

case WM_DESTROY:

return 0;

case WM_KEYDOWN:

switch (wParam)

case VK_ESCAPE:

PostQuitMessage(0);

return 0;

return 0;

default:

return DefWindowProc (hWnd, message, wParam, lParam);

}
/*******************

* Enable OpenGL

*******************/

void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC)

PIXELFORMATDESCRIPTOR pfd;

int iFormat;

/* get the device context (DC) */

*hDC = GetDC (hWnd);

/* set the pixel format for the DC */

ZeroMemory (&pfd, sizeof (pfd));

pfd.nSize = sizeof (pfd);

pfd.nVersion = 1;

pfd.dwFlags = PFD_DRAW_TO_WINDOW |

PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;

pfd.iPixelType = PFD_TYPE_RGBA;

pfd.cColorBits = 24;

pfd.cDepthBits = 16;

pfd.iLayerType = PFD_MAIN_PLANE;
iFormat = ChoosePixelFormat (*hDC, &pfd);

SetPixelFormat (*hDC, iFormat, &pfd);

/* create and enable the render context (RC) */

*hRC = wglCreateContext( *hDC );

wglMakeCurrent( *hDC, *hRC );

/******************

* Disable OpenGL

******************/

void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC)

wglMakeCurrent (NULL, NULL);

wglDeleteContext (hRC);

ReleaseDC (hWnd, hDC);

}
LINGKARAN
#include "stdlib.h"

#include "gl/glut.h"

#include "math.h"

const double PI = 3.141592653589793;

int i;

void back(){

glBegin(GL_QUADS); //menggambar segiempat

glColor3f(1,1,1); // untuk menentukan warna garis atau titik

glVertex2d (-500,500); // untuk menentukan posisi sebuah garis

glVertex2d(500,500); // untuk menentukan posisi sebuah garis

glVertex2d(500,-500); // untuk menentukan posisi sebuah garis

glVertex2d (-500,-500); // untuk menentukan posisi sebuah garis

glEnd(); // fungsi akhir perintah OpenGl

void lingkaran(int radius, int jumlah_titik, int x_tengah, int y_tengah) {

glBegin(GL_POLYGON);

for (i=0;i<=360;i++){

float sudut=i*(2*PI/jumlah_titik);

float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);

glVertex2f(x,y);

glEnd();

void Draw() {

glClear(GL_COLOR_BUFFER_BIT);

back();

glColor3f(1.0, 0.0, 0.0);

lingkaran(100,200,0,0);

glColor3f(0.0, 1.0, 0.0);

glFlush();

int main(int argc, char **argv) {

glutInit(&argc, argv); //pemanggilan fungsi utama opengl

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //fungsi warna jenis tampilan

glutInitWindowSize(300, 300); //menetapkan ukuran windows

glutInitWindowPosition(200, 200); //menetapkan posisi window

glutCreateWindow("Lingkaran"); //membuat window dan menentukan judulnya

gluOrtho2D(-150., 150., -150., 150.);

glutDisplayFunc(Draw); //Memanggil fungsi untuk menampilkan objek

glutMainLoop(); //Terus tampilkan hingga program diakhiri

return 0;
}

You might also like