Benim sorum şudur: Yapmanız gereken tek şey bir tampon ayırmak, bir bitmap geçmek ve ekrana çizmek iken neden açık gl, sfml, sdl gibi bir şey kullanmaktan rahatsız olmalısınız?
Kısa: Çünkü hızlı (OpenGL, DirectX).
Uzun:
Bunu kendin yapabileceğini düşünebilirsin. Ekrana piksel çizin. Dörtlü veya üçgen gibi şekiller çizmek için küçük bir kütüphane yazabilirsiniz. Bu elbette işe yarayacak. Tam olarak bunu yapmak için bir sürü kütüphane var. Hatta bazıları, Casey Muratori'nin yaptığı şeyi yapacak olan OpenGL-spesifikasyonunu (opengl için bir yazılım tarafı gibi) uygularlar. Her şeyi yazılım tarafında hesaplarlar, pikselleri yazılım tarafında ayarlarlar ve sonucu ekrana yazarlar.
Ancak bu yavaş . Sonunda tüm bunları yürütecek olan CPU bu senaryo için yapılmamıştır. GPU'lar bunun için var. OpenGL’in yaptığı (elbette bir yazılım uygulaması olmadığı sürece), yapmanız gereken her şeyi almak ve tüm verileri, tüm aramaları, neredeyse her şeyi grafik kartına itmek ve GPU’ya işi yapmasını söylemektir . GPU, bu tür işler için özel olarak hazırlanmıştır. Kayan noktalı sayıları çarpma ( 3B sahne çekerken çok şey yaptığınız şey ) ve gölgelendiricileri çalıştırma. Ve buna paralel olarak. GPU'nun ne kadar hızlı olduğu hakkında bir fikir sahibi olmak için 1920x1080 piksel çözünürlükte 3D olarak basit bir sahne düşünün. Bunlar, çarpılmak üzere 2.073.600 pikseldir. İçin her piksel, grafik işlemcisi fragmanı tarayıcılı çalışacaktıren az bir kez , çoğu zaman bir defadan fazla. Şimdi, saniyede 60 kare hızında çalıştığımızı varsayalım. Bu, GPU’nun parça gölgelendiriciyi saniyede 2,073,600 * 60 = 124,416,000 kez çalıştırdığı anlamına gelir . İşlemcinizde böyle bir şey yapabileceğinizi düşünüyor musunuz? (Bu oldukça basitleştirilmiş bir açıklama, daha yakın nesnelerle ne kadar piksel çektiğiniz , ne kadar MSAA kullandığınız vb. Gibi göz önünde bulundurulacak çok daha fazla şey var, ancak saniyede 124.416.000 kez muhtemelen alabileceğiniz en düşük değer ve Basit bir sahne ile kolayca 60fps'den daha fazlasını elde edersiniz)
OpenGL ve Direct3D'nin yaptıkları şey, @Uri Popov'un cevap verdiğini gördüğümüz motorlar için.