Kaynak Kod:
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import math
import sys
# Some api in the chain is translating the keystrokes to this octal string
# so instead of saying: ESCAPE = 27, we use the following.
ESCAPE = '\033'
# Genel OpenGL baslangic ayarlama metodu, baslangicta
# yapilmasi gereken tum isler yapiliyor
# Bu metod pencere yaratildiktan hemen sonra cagrilir
def InitGL(Width, Height):
#Arka plan rengini temizliyoruz (siyah oluyor)
glClearColor(0.0, 0.0, 0.0, 0.0)
#Gorunen alani ayarlayacagimiz icin projection
#moduna geciyoruz
glMatrixMode(GL_PROJECTION)
#matrisi resetleyelim
glLoadIdentity()
#2B ortogonal gorunur alani ayarlayalim
gluOrtho2D(-1,1,-1,1)
#Cizim yapacagimiz icin model moduna gecelim
glMatrixMode(GL_MODELVIEW)
#birim matrisi yukleyelim
glLoadIdentity()
# Bu metod pencere boyutunu degistirdigimizde cagriliyor
# eger tam ekran calisiyorsak cagrilmaz :)
def ReSizeGLScene(Width, Height):
#Goruntu penceresini yeni boyuta gore ayarliyoruz
glViewport(0, 0, Width, Height)
# Cizimlerin yapildigi metod
def DrawGLScene():
#Arka plan rengini gri yapiyoruz
glClearColor(0.5,0.5,0.5,1)
#Ekrani temizleyelim
glClear(GL_COLOR_BUFFER_BIT)
#Cizecegimiz sekil yesil olacak
glColor3f(0,1,0)
#ucgen cizecegimiz icin gerekli hesaplamalari yapiyoruz
hypotenus = 0.5/(math.sin(math.radians(60)))
adjacent = 0.5/(math.tan(math.radians(60)))
#3 kenarli poligon cizecegiz
glBegin(GL_POLYGON)
# Ucgeni cizmeye baslayalim
#ust kose
glVertex2f(0,hypotenus)
#sol alt kose
glVertex2f(-0.5,-adjacent)
#sag alt kose
glVertex2f(0.5,-adjacent)
glEnd()
# goruntu ekrana gelsin
#bunu iyice anlamak icin double buffering konusu ogrenilmeli
glutSwapBuffers()
# Bu metod her tusa basildiginda cagirilacaktir
# Asagida bu ayarlamayi yaptik
# Unutulmamasi gereken basilan tusun python tuple olarak
# gecirildigidir ( (key, x, y) seklinde)
def keyPressed(*args):
# Escape tusuna basilinca cikiyoruz
if args[0] == ESCAPE:
sys.exit()
def main():
global window
glutInit(sys.argv)
#Goruntuleme modunu seciyoruz
#double buffering ve alpha destegi olan RGB modu seciliyor
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE )
# pencerenin boyutunu 640 x 480 olarak ayarliyoruz
glutInitWindowSize(640, 480)
# pencere konumunu sol ust kose olarak ayarliyoruz
glutInitWindowPosition(0, 0)
# pencereyi yaratalim
glutCreateWindow("Merhaba Dünya")
# Cizim metodunu ayarliyoruz
glutDisplayFunc(DrawGLScene)
# Tam ekran olmasi icin asagidaki kisim kullanilabilir
# glutFullScreen()
# Yapilacak bir sey yokken ekrani yenileyelim
glutIdleFunc(DrawGLScene)
# Pencerenin yeniden boyutlandirilmasinda asagidaki metod kullanilacak
glutReshapeFunc(ReSizeGLScene)
# Klavyeye basildiginda calisacak olan metod
glutKeyboardFunc(keyPressed)
# Pencereyi ilklemesini tamamliyoruz
InitGL(640, 480)
# Ana dongumuz baslasin
glutMainLoop()
# Mesajimizi ekrana yazalim ve programi baslatalim
print "Çıkmak için ESC tuşunu kullanabilirsiniz."
main()
Ubuntu, Anjuta ve OpenGLJOGL ne ola ki?
Dev C++ ve Glut
Daha güzel bir örnek incelemek isterseniz
2 yorum:
Kafama nasıl oluyor acaba diye takılyordu ama oturup birşeyler okumaya da üşenmiştim açıkçası. Çok teşekkür ederim.
allah senden razı olsun nette o kadar aradım python ile opengl kullanımı hakkında bi belge bulamadım bu fikir edinmeme yardımcı oldu saolasın..
Yorum Gönder