Pygame oyun ekranını farklı çözünürlüklere sığdırma

Merhaba, pygame ile oyun yapıyorum ve oyun ekranının farklı boyutlardaki ekranlarda ekrana sığmasını istiyorum. ekranın width ve height değerlerini alıp, pygame.transform.scale kullanıp oyundaki her şeyin olduğu surface in boyutunu değiştirdim ancak görüntü çok kötü gözüküyor ve sürekli pygame.transform.scale kullanmam gerektiğinden oyunun fps i bir anda 60 fps ten 30 fps e düşüyor.
Eğer anlattıklarım yeterince açıklayıcı olmadıysa örnek göstereyim.

Normalde oyun ekranım şu:

Ekranı büyütünce şöyle oluyor:

Ekrandaki yazıya bakarsanız fps farkını görebilirsiniz.

Benim yapmak istediğim ise şu:
VfKfX

Bu örnek unity den biliyorum ama yapmak istediğimi pygame de yapmış kimseyi bulamadım.
Gördüğünüz gibi oyun ekranı büyüyüp küçüldükçe ördek te büyüyüp küçülüyor ama benim oyunumdaki gibi göze hitap etmeyen bir şekilde değil.

Ayrıca gif i şu linkten buldum:
https://gamedev.stackexchange.com/questions/79546/how-do-you-handle-aspect-ratio-differences-with-unity-2d
Belki işe yarayabilir.

Evet bunun için çeşitli yöntemler var.

Çözünürlük arttıkça tazeleme hızının azalması doğal değil mi?

Ekran kartlarına bunun için para harcamıyor muyuz?

Oyunda göze hitap etmeyen obje nedir?

Onun da resmi olursa bir fikir beyan edebiliriz.

Çizimler vektörel veya raster image olmak üzere ikiye ayrılır, vektörel nesne ve resimler tabi ki bozulmadan ölçeklenebilir.

Ama elinizdeki düşük çözünürlük bir resmi ölçeklerseniz bu resim büyütüldüğünde tabiki bozulabilecektir.

pygame - part 8 - resize image - YouTube

Buradaki örnekte yeterli çözünürlükte bir png resmi dahi bozulmuyor.

Siz neyi ölçeklemek istediğinizi ifade edin. Varsa resim ve kodlarını koyun alternatif çözümlerine beraber bakalım…

Çünkü bir çok alternatif yol var.

Unity de kullandıklarınız vektörel nesnelerdir. Bu nesneler aslında bir denklemdir ve bu denklemin katsayısını bozulmadan değiştirebilir büyütüp küçülttüğünüzde veri kaybı oluşturmazsınız.

Aynı şekilde, resim formatlarınız wmf, eps, cdr, svg gibi vektörel resimler ise ölçeklerken sorun yaşamazsınız.

Diğer türlü raster resim dosyası kullanacaksanız, en üst çözünürlük hedefinize uygun resimleri alıp ölçekle küçülterek kullanmaktır.

Oldskool Demos with Python: RGB Sphere (Epcot Sphere / Geodesic Polyhedron) (oldskoolpython.blogspot.com)

Vektör nesnelere de örnek vereyim yukarıdaki linkle.

Söylediğim gibi, kötü görünmekten kastınız nedir hangi nesneler eden kötü tamamen sizin yorumunuz.

Aslında olanı görmemiz için kullandığınız resim ve nesneleri görmemiz gerekir.

Ama tahminle konuşacaksak.

Nesnelerinizi ölçeklenebilir, resimlerinizi de vektörel seçin.

Vektörel resim kullanmak istemiyorsanız. En üst çözünürlüğünüze uygun resimleri, ölçekle küçülterek kullanın.

pygame.transform.scale i sürekli kullandığımdan yavaşlıyordu oyun. Yani sanırım buradaki sorun
ekranın boyutunda değil surface in ekranın boyutuna göre büyütülmesinde.

Aslında ilk 2 resim oyunun kendisi. Oyunda renkli karelerden başka bir şey yok yani bir fotoğraf koymadım sadece surface.fill(“renk”) ile kareleri boyadım.

Peki pygame de vektör resim dosyaları kullanmanın bir yolu var mı ?

Kod şurada:
https://github.com/Furkan125/pygame-soru

Ne yapmak istediğimi de tam olarak anlatayım. Oyunu bir sistem denemek için yapıyorum. Pygame de kamera sistemi yapmak zor ve bazı kısıtlamalar oluyor. Daha önceki yaptığım oyunlarda karakter ekranın en soluna/sağına geldiğinde ilerlemesi duruyor ve bu sefer oyundaki bloklar, puanlar v.b sola/sağa doğru kaymaya başlıyordu. Ancak bu bazı kısıtlamalara sebep oluyordu. Mesela karakteri haritanın en sağına koyduğumda karakteri takip eden bir kamera olmadığı için haritanın en başını gösteriyordu ve orası karakterin olduğu yer değildi. Haritanın en sağı ekranın gösterdiği kısmın dışında kaldığı için “Karakter ekranın sonuna gitmiş haritanın sağa kayması lazım.” gibi bir durum da söz konusu olmuyordu. O yüzden unity deki gibi bir kamera sistemi yapmayı denedim. Unity de Main Camera diye bir obje var ve onu mesela oyuncunun içine sürükleyince oyuncu hareket ettikçe kamera da hareket ediyor. Benzer bir sistemi pygame ile de yapmaya çalıştım ancak ekranın sadece belli bir kısmını aldığımızdan küçük bir görüntü oluşuyor. Bu yüzden görüntüyü büyütüp ekrana sığdırmak istedim.

Deneyerek daha iyi anlayacağınızı düşünüyorum. Kodlar github da yüklü ve kodları yükledikten sonra main dosyasını çalıştırırsanız kod çalışacaktır (pygame yüklü ise).

Daha iyi anlayabilmeniz için main.py dosyasında scene isimli surface in arkaplan rengini değiştirdim böylece anlaması daha kolay olacaktır sanırım.

Ayrıca ilk fotoğraftaki görüntüyü elde etmek için kodda değişiklik yapmanıza gerek yok ama 2. fotoğraftaki görüntüyü elde etmek için level.py dosyasında en alttaki yorum satırını kaldırmalısınız.

Birde neden anlamış değilim ama kameranın oluşturduğu görüntüyü (0, 0) a koyması gerekirken daha aşağıya koyuyor. Hatta 86. satırdaki 250 değerleriyle oynadıkça sonuçta ne kadar aşağıya koyduğuda değişiyor (ki oradaki 250 lerin amacı farklıydı).

"Surekli"den kasit frame basina bir tane, degil mi?

Garip, cunku kotu gozukecek kadar basitse hizli olmasi lazim.

Cok fazla opsiyon yok malesef. Ya kodu degisik cozunurluklerde calisacak hale getirmek, ya da ciktiyi scale etmek lazim. Hizli scale rutini bulmak mumkun. Her grafigin bozulmamasini garanti etmek mumkun degil, fakat yukaridaki oyunun grafiklerine baktigimda, bozulmadigini goruyorum. (Gerci ikisinin de cozunurlugu ayni ve “oyun” olabilecek bir sey gormuyorum, acaba yanlis ekran goruntuleri mi paylasildi?)

1 Beğeni

Eski bir oyun kodunda hatırladığım, fullscreen çalıştırmak yerine window modunda çalıştırdığımda pfs hızı ilginç bir şekilde artıyordu. OpenGl çağırma şekli ile alakalımıdır bilemem ama sürekli ölçeklemek dahi hızı etkilemiyor olmalı. Çünkü zaten oyun boyunca bir çok şey süreki ölçeklenebilir hele ki üç boyutlu oyunlarda.

Ben kaplamalar bulutlar vs hayal ettim kusura bakama. Bu kadar temel kodda görsel problem tamamen programalama hatasından kaynaklanabilir.

Her şeyin bir yolu vardır. Sonuçta directx veya opengl vektörlerle çalışabilir, pygame sadece bir nevi wrapper.

Bu paragrafı bir kaç kez daha okumam gerekiyor. Yapmak istediğini anlamakla beraber neyi gözden kaçırdığını henüz göremedim.

Zamanın birinde minecraft tarzı kodlara baktım pygame ile…

GitHub - jdah/minecraft-weekend: Minecraft, but I made it in 48 hours.

Bunun bir kaç farklı versiyonu vardı internette…

Oyunu windowed modda çalıştırıp boyutunu değiştirdiğimde dahi kontrol hatası veya benzeri oluşmadı.

Koduna göz ucuyla baktım. Tamamen bakacak fırsat bulursam belki düzeltmeler yapabilirim.

Yani henüz sorununu tam anlayamadığımda tam çözüm gösteremiyorum velakin ön tahminde bulunmamı istersen.

Kontrollerini ve oluşturuduğun tüm nesneleri doğru ölçeklenemen gerekir. Eğer kontrollerin sabit iken sadece ekranı ölçeklersen beklediğin gibi çalışmaya bilir.

Ama verdiğim kodları incelersen bir çok minecraft benzeri kodda kamera problemi olmadığını görebilirsin.

Yine tahminen bence, hem kamera hem kontroller bir katsayı değerine bağlı değişkenlerde tutulup ölçekleme esnasında eşgüdümde ayarlanabilir.

Yada temel çözünürlük değerlerine göre bir kaç sabit atayıp, ekran çözünürlüğünü tespit ettikten sonra uygun katsayıları atayarak çözebilirsin.

Oyun girişlerindeki çözünürlük ayarlarını hatırladığını düşünüyorum.

Yine detaylı baktığımda detaylı örnekler yapabiliriz.

EDIT:

Bakmaya devam ediyorum bu arada;

main.py içinde;

self.screen = pygame.display.set_mode((800, 600), pygame.RESIZABLE )

şeklinde satırı ekledim.

Beklentim;

level içinde;

cameraResult = pygame.transform.scale(cameraResult, (self.scene.get_width(), self.scene.get_height()))

Satırı açıkken pencere boyutunu değiştirdiğimde değişmesi;

image

Farklı boyutlarda bir ölçeklemeden bahsedemeyiz. Yani scale kodunda bir hata var.

Ekranı ölçeklemiyoruz.

Daha da ilginci;

Ekranda sola yani küpü geriye götürdüğümüzde;

Kırmızı yol ve küp yukarı doğru kayıp yok oluyor.

Yani kodlamada bir hata var, hem kontrolün hem ölçeklemen problemli.

Yine söylediğim gibi bakabildiğim zamanlarda kodu yeniden düzenleyebilirim.

Ama tavsiyem, nesnelerini ve yollarını sabir katsayılara baklı ölçekli olarak oluşturman böylece ekran çözünürlüğüne göre katsayıları değiştirmen, aynı şey kontrollerin için de geçerli.

Şimdi o kısıma da göz atıyorum.

EDIT:

Kontrollere gelemeyeceğiz bu gidişle.

Şimdi scale ile ilgili bir örneğe baktım.

python - Pygame. How do I resize a surface and keep all objects within proportionate to the new window size? - Stack Overflow

import pygame
from pygame.locals import *

def main():
    pygame.init()
    screen = pygame.display.set_mode((200, 200),HWSURFACE|DOUBLEBUF|RESIZABLE)
    fake_screen = screen.copy()
    pic = pygame.surface.Surface((50, 50))
    pic.fill((255, 100, 200))

    while True:
        for event in pygame.event.get():
            if event.type == QUIT: 
                pygame.display.quit()
            elif event.type == VIDEORESIZE:
                screen = pygame.display.set_mode(event.size, HWSURFACE|DOUBLEBUF|RESIZABLE)

        fake_screen.fill('black')
        fake_screen.blit(pic, (100, 100))
        screen.blit(pygame.transform.scale(fake_screen, screen.get_rect().size), (0, 0))
        pygame.display.flip()
    
main()    

Kodu çalıştırdım;

image

Çeşitli çözünürlüklerde gayet rahat ölçekleyebiliyor.

Bence kodundaki bir hatadan kaynaklı.

Dediğim gibi daha kontrollere de bakamadım.

Pygame yerine pyglet tavsiye ederim. Bu problemleri yaşamazsınız.

Bu oyunda pygame kullanılmış gibi durmuyor. Yanlış örneği paylaştınız herhalde.

Bu paragrafi, hatta butun bu post’u ve altindakileri kacirmisin bu arada. Cevabim ona gore yorumlansin lutfen. Bir daha yazdigimda her seyi okumus ve koda da bakmis olacagim.

1 Beğeni

Evet hocam bu tarz oyunlara örnek olsun diye koydum.

https://dafluffypotato.com/static/scripts/3d_terrain.py

Özelinde isterseniz pygame kodlarını da vereyim.

Bulabilirsem arşivimde de farklı tipleri var.

Burada anafikir, 3d kamera dahi kullanıp ölçeklerken pygame de sorun yaşamadım.

Aslına bakarsanız aklımda bu oyun kodunu burada paylaşmak da vardı. O kadar sade bir kodla pygame de ne çok şey yapılabileceğini görmek için güzel bir örnekti.

Kodu bulurum da kaynak göstereceğim linki hatırlamadığımdan bekletiyorum. Yapana saygımdan.

1 Beğeni

Evet.

İlk 2 ekran görüntüsü oyunun kendisi. Oyunu kamera sistemi yapmayı denemek istediğim için yaptım o yüzden renkli karelerden başka bir şey eklemedim.

Zaten bunu yapıyorum

Bunu nasıl yapabilirim ?

Bunu inceleyeceğim

Az önce bunu denedim ve gerçekten performans hızı arttı. Sadece self.screen = pygame.display.set_mode((3050, 1080), pygame.FULLSCREEN|pygame.NOFRAME|pygame.SCALED) kodundan , pygame.FULLSCREEN|pygame.NOFRAME|pygame.SCALED kısmını çıkarmak epey bir performans arttırdı. Artık o yorum satırının olduğu kısmı çalıştırınca sadece arada sırada oyun donuyor.

Önemli değil.

İnceleyeceğim

Evet bunu bende farkettim. Zaten scene'in genişliğinin 4000 olmasının sebebi o yoksa sağa gidince de aynısı oluyordu.

Pyglet ile ilgili fazla eğitim yok diye pygame i seçmiştim ancak pyglet’e de bakacağım. Fazla bilgi göz çıkarmaz.

Kendi dökümanı fena değil.

1 Beğeni

Hangi tarz? Bu oyunun grafik pipeline’ının çoğu pygame oyununun kullandığı grafik pipeline’nına benzediğini sanmıyorum. @Furkan3’ın paylaştığı koddakine zaten benzemiyor.

Bu örnekteki yöntemin verdiğiniz minecraft örneğindeki gibi bir çizim ile başa çıkabilecek performansa sahip olduğundan şüpheliyim.

minecrat tarzı oyunlar hocam; 3D bir oyunda kamera mesafesini ayarlamak gayet de ölçeklemenin bir yöntemidir. 2D yada 3D bir oyun da olsa kamera mesafesi değiştirilerek kolaylıkla ölçeklemiş olursunuz.

Ondan bunu gösterecek bir görsel hayal etmeyi kolaylaştırır diye düşündüm.

Deneriz hocam…

Şüphelenmek yerine denemek her zaman sonuçları görmek açısından daha faydalı olur.

Sonuçta, bunlar birer kütüphane ve başta söylediğim gibi OpenGL üzerine bir arayüz sunuyorlar. Pygme SDL üzerinden opengl bağımlığını da kaldırıyor. Ama tabi ki bu da yavaşlamaya neden olabilir. Doğru kodlarsanız gayet rahat bu işle başa çıkabilir.

2014 yılları civarı pyglet kodu ile yazılmış bir meşhur minecraft kodu vardı.

Minecraft/main.py at master · fogleman/Minecraft · GitHub

Çeşitli varyasyonları internette mevcut. Buna meydan okumak için biri de pygame ile benzerini yapmıştı.

Arşive almıştım ama bulamıyorum şu an. Bulursam koyarım dememin sebebi budur.

Yanlış anlaşılmasın, pyglet kötü demedim, pyglet iyi bir altenatif olmakla beraber, pygame kullanmamak için bir neden göremiyorum.

Yine şüpheleriniz devam ederse, vakit ayırıp, pygame ile yeniden bir kod yazmaya devam ederiz ve bakarız siz de görmüş olursunuz.

Bu güne kadar benim edindiğim tecrübe programlamada imkasız diye bir şey yoktur…

Neden hız konusuna takılmadım. İşletim sistemlerinin OpenGL ve DirectX e bakış açısı değişti. Şimdi ben directx çağrısı bile yapmadan doğrudan wingui üzerinde gömülü hardware acceleration elde edebiliyorum. Çünkü windows directx i windows a gömdü.

Tabi bu şüpheyi gidermek için dener performasına bakarız.

EDIT:

Tabi deneyenler var mı diye bakıp, feyz de alabiliriz.

Pygame • PyOpenGL • Simple voxel engine - YouTube

Yani pygame OpenGL siz yaşamak zorunda da değil.

Bu arada ölçekleme için ;

python - How can I zoom into an object and follow that object in Pygame? - Stack Overflow

Nesneye zoom yaparak ölçekleme örneği.

Aynı benim düşündüğüm gibi scale faktör vermiş, surface için…

Burada farklı çözünürlükler için bir kaç scale faktör tanımlayıp ölçekleme sorunu çözebilirsiniz gibi geldi bana.

Tabi daha önce söylediğim gibi, birden çok yaklaşımla birden çok çözüm üretilebilir.

Burada en önemli husus. Max çözünürlük değerlerinize uygun resimler kullanırsanız, sorun yaşamazsınız…

Yada daha önce söylediğim gibi vektör resim kullanabilirsiniz.

wmf file to bitmap was forced to 72 dpi · Issue #4223 · python-pillow/Pillow · GitHub

Vektör resimleri uygun çözünürlükler için çevirip yüklerseniz. Her çözünürlük için ayrı resimler tutmak zorunda da kalmamış olursunuz.

Ben de hazır bu başlık varken belki şu minecraft kodunu çalışmaya başlayabilirim.

Maksat kodlama olsun.

İşe yarayabilir gibi duruyor. İnceleyeceğim.

Kolay gelsin :+1:

1 Beğeni
import pygame as pg
from pygame.locals import *

from OpenGL.GL import *
from OpenGL.GLU import *

cubeVertices = ((1,1,1),(1,1,-1),(1,-1,-1),(1,-1,1),(-1,1,1),(-1,-1,-1),(-1,-1,1),(-1,1,-1))
cubeEdges = ((0,1),(0,3),(0,4),(1,2),(1,7),(2,5),(2,3),(3,6),(4,6),(4,7),(5,6),(5,7))
cubeQuads = ((0,3,6,4),(2,5,6,3),(1,2,5,7),(1,0,4,7),(7,4,6,5),(2,3,0,1))

def wireCube():
    glBegin(GL_LINES)
    for cubeEdge in cubeEdges:
        for cubeVertex in cubeEdge:
            glVertex3fv(cubeVertices[cubeVertex])
    glEnd()

def solidCube():
    glBegin(GL_QUADS)
    for cubeQuad in cubeQuads:
        for cubeVertex in cubeQuad:
            glVertex3fv(cubeVertices[cubeVertex])
    glEnd()

def main():
    pg.init()
    display = (1680, 1050)
    pg.display.set_mode(display, DOUBLEBUF|OPENGL)

    gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)

    glTranslatef(0.0, 0.0, -5)

    while True:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                pg.quit()
                quit()

        glRotatef(1, 1, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
        solidCube()
        #wireCube()
        pg.display.flip()
        pg.time.wait(10)

if __name__ == "__main__":
    main()

İhtiyaç harware acceleration ise tabi ki py opengl kütüphanesi ile pygame desteklendiğinde gayet güzel iş çıkarıyor…

  pg.display.set_mode(display, DOUBLEBUF|OPENGL)

Burada zaten göründüğü üzere, pygame bir opengl seçeneği sunuyor.

Yani grafiklerle başa çıkamama durumu sözkonusu bile değil.

Edit: Kaynağı vermeyi unutmuşum bu sefer de.

Advanced OpenGL in Python with PyGame and PyOpenGL (stackabuse.com)

Tersini söylemedim zaten. Lakin burada kullandığınız yöntem farklı, örneğiniz söylediklerim ile çelişmiyor. Pygame’de genelde yukarıdaki örnekte de olduğu gibi surface soyutlaması kullanılıyor. Pyglet ise hali hazırda Sprite gibi sınıflar üzerinden batch rendering, antialiasing gibi kolaylıklar sağlıyor ve sprite’ler üzerindeki scale veya rotate işlemlerinin sonucu Pygame’e kıyasla daha kaliteli. Çizimi OpenGL ile manuel olarak yapacaksak Pygame’i niye tercih edelim ki zaten? Pygame basitliği, kullanım kolaylığı ile tanınmıyor mu?

Söylediğim şu kısma idi;

Verdiğim örnek, zaten bununla alakalı. Yani, daha fazla performans istersek, pygame; bize hardware erişimi için alternatif sunuyor. Göstermek istediğim buydu.

Kesinlikle bu kısma itirazım yok. Kütüphane kıyaslaması üzerinde gitmedim zaten, bana da sorarsanız pyglet tercih ederdim.

Ama baktığım noktadan, soruyu soran kişinin, tercihine ve bilgi seviyesine karşı empati kurmaya çalıştım. Hakim olduğu kütüphane pygame ise başa dön pyglet kullan demeden önce sorunun nereden kaynaklandığına ve nasıl çözülebileceğine bir bakış açısı getirdim.

Yine benzer şekilde sorun kütüphane yetersizliğinden değil, kodlama tarzından bunun için alternatiflerden biri opengl desteği ile çıkışı değiştirip ölçekleyebilmek, ama temelde zoom için scale faktörle çözülebileceğini düşündüm.

Önünde sonunda hayatın gerçekleri ile (opengl) ile karşılaşacak, dahası ses için de openAL ile karşılaşacak.

Burada opengl örneği ile çıkış ekranını ayarlamak daha kolay ve sizin hız endişenizi gidermek için örnekledim.

Baştan beri söylediğim şeylerden biri, bir kütüphane diğerinden iyidir kötüdür kıyaslaması değil. Bu görece bir konudur. Ve bir yere varmaz tartışmadır. Ben bu nedenle sadece mevcut kütüphane üzerinde neler yapılabilire baktım.

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

verticies = ((1, -1, -1), (1, 1, -1), (-1, 1, -1), (-1, -1, -1),
             (1, -1, 1), (1, 1, 1), (-1, -1, 1), (-1, 1, 1))
edges = ((0,1), (0,3), (0,4), (2,1),(2,3), (2,7), (6,3), (6,4),(6,7), (5,1), (5,4), (5,7))

def drawCube():
    global edges
    glBegin(GL_LINES)
    for edge in edges:
        for vertex in edge:
            glVertex3fv(verticies[vertex])
    glEnd()

def drawText(x, y, text):                                                
    textSurface = font.render(text, True, (255, 255, 66, 255)).convert_alpha()
    textData = pygame.image.tostring(textSurface, "RGBA", True)
    glWindowPos2d(x, y)
    glDrawPixels(textSurface.get_width(), textSurface.get_height(), GL_RGBA, GL_UNSIGNED_BYTE, textData)

pygame.init()
clock = pygame.time.Clock()

display = (400, 300)
pygame.display.set_mode(display, RESIZABLE| DOUBLEBUF | OPENGL)
font = pygame.font.SysFont('arial', 64)

glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, 0.0, -5)
run = True
while run:
    clock.tick(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    glRotatef(1, 3, 1, 1)
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
    drawCube()
    drawText(140, 120, "cube")
    pygame.display.flip()

pygame.quit()
exit()

Tapi daha az manuel opengl içeren bir kod örneği üzerinde de çalışıyordum. Bu şekilde resize esnasında ölçek derdi olmuyor.

Text e mevcut çözünürlüğü aktaracak ken sizin yorumu gördüm.

Özetlemem gerekirse, pyglet tercihim olurdu. Ama neden pygame demem. Pygame yavaş da diyemem, gl desteğiyle hızlandırılır.

Başına dönersek, zaten 2d bir oyun, antialias yada fog yada diğer hesaplamalar çok da şu an olası görünmüyor. Sadece çıkışı /viewport ölçeklemek için basit bir yöntem sorulmuş, biri scale faktör belirlemek, diğeri ekranı opengl e teslim etmek.

Bu kadar açıklama ihtiyacı da pygame hız probleminden şüpheniz. Bu durumda da hız tedbirlerini çeşitlendirdim.

OpenGl ile hiç pygame yada pyglet de kullanmadan yapılabilir. Aslında kapsülledikleri çok fazla bir kod yok gerisinde. Ama hazır gütüphanelere kim hayır diyebilir.

1 Beğeni

Farkındayım, bu desteğin varlığından da haberdarım. Dediğim gibi, yöntem farklı.

1 Beğeni