İnternette, Libgdx'in artık küp haritalarını desteklediğini okudum ve oyunuma nasıl ekleneceğini anlamaya çalışıyorum. StackOverflow'a bir örnek aradım ama sadece bir tane buldum ve eskimiş görünüyor. OpenGL shader'larla çok fazla tecrübem yok, bu yüzden Libgdx bana oyundaki bir kalkana yansıma efekti eklemek için OpenGL shader'lar üzerinde büyük bir kitap okumaya gerek kalmadan bir cubemap sağlayabilir. Herhangi bir yardım takdir edilecektir. Bir 2d dokuda olduğu gibi genel olarak bir cubemap geneldir.Libgdx CubemapAttribute: Libgdx'in CubemapAttribute'u yansıma oluşturmak için nasıl kullanabilirim?
Libgdx CubemapAttribute: Libgdx'in CubemapAttribute'u yansıma oluşturmak için nasıl kullanabilirim?
cevap
İstediğiniz her şey için kullanılabilir. Ayrıca farklı amaçlar için birden fazla küp eşlemesine sahip olabilirsiniz. Benzer şekilde CubemapAttribute
, ortamınıza veya malzemenize bir cubemap eklemek için kullanılabilir. Tıpkı bir 2d doku eklemek için TextureAttribute
gibi kullanılabilir. aşağıdaki gibi
Bir cubemap oluşturabilirsiniz:
Cubemap cubemap = new Cubemap(
Gdx.files.internal("image_px.png"),
Gdx.files.internal("image_nx.png"),
Gdx.files.internal("image_py.png"),
Gdx.files.internal("image_ny.png"),
Gdx.files.internal("image_pz.png"),
Gdx.files.internal("image_nz.png"), false);
Here Eğer bir cubemap oluşturmak için kullanabileceğiniz bazı örnek görüntüleri bulabilirsiniz. İsmi uygun şekilde ayarladığınızdan emin olun.
Bir cubemap OpenGL kaynaklarını barındırır ve gerektiğinde atılması gerekir. senin dispose
yönteme bu satırı ekleyin unutmayın:
cubemap.dispose();
cubemap için tipik bir kullanım yansımalarını taklit için kullanılan bir "çevre haritası" sağlamaktır. Eğer o zaman u_environmentCubemap
üniformasına bu cubemap bağlayacak DefaultShader
uygulanmasını kullanırsanız
environment.set(new CubemapAttribute(CubemapAttribute.EnvironmentMap, cubemap));
, böylece gölgelendiricideki kullanabilirsiniz: aşağıdaki gibi ortamınıza böyle harita ekleyebilirsiniz.
Varsayılan gölgelendirici programının (glsl dosyaları) yansımaları desteklemediğini unutmayın, bunun için farklı bir gölgelendirici kullanmanız gerekecek. İsterseniz this shader'u kullanabilirsiniz. Modelinizin malzemesinin yansıtıcı olması gerektiğini unutmayın (see this example material).
modelBatch = new ModelBatch(new DefaultShaderProvider(
Gdx.files.internal("vertex.glsl"),
Gdx.files.internal("fragment.glsl")));
kendi gölgelendiricideki cubemap kullanmak istiyorsanız o zaman temelde like this (Bu soruya kapsamı dışındadır, çünkü sadece basit bir örnek, ben gerçek gölgelendirici yazılı girmeyeceğim edeceğiz) kullanabilirsiniz :
gl_FragColor = vec4(textureCube(u_environmentCubemap, reflectDir).rgb, 1.0);
- 1. Grafik oluşturmak için system.web.ui.datavisualization.charting.chart nasıl kullanabilirim?
- 2. Tutulmada db şeması oluşturmak için neler kullanabilirim?
- 3. Windows 10 evrensel proje oluşturmak için CMake'i nasıl kullanabilirim
- 4. Generics'i bir enum'dan IEnumerable yapma yöntemi oluşturmak için nasıl kullanabilirim?
- 5. Libgdx bir BitmapFont'u nasıl çevirir?
- 6. Yansıma?
- 7. libgdx
- 8. Yansıma
- 9. nasıl gibi değer türleri bir örneğini oluşturmak istediğiniz yansıma
- 10. Normal sütunları için yansıma
- 11. LibGDX
- 12. yansıma
- 13. Libgdx
- 14. yansıma
- 15. Temsilci Bilgilerini almak için yansıma
- 16. libgdx TextureRegion to Pixmap
- 17. Çoklu platformlar için aynı yapılandırılmış IDE'ler oluşturmak için P2'yi nasıl kullanabilirim?
- 18. Windows Phone için Libgdx 8
- 19. ParseInt'i bir çift için nasıl kullanabilirim?
- 20. Yendi tespiti için JS WebAudioAPI'yi nasıl kullanabilirim?
- 21. Bir TextBlock'ta StringFormat için nasıl statik kaynak kullanabilirim veya kullanabilirim?
- 22. Aygıt, libGDX
- 23. ImageMagick Yansıma
- 24. Ölçekli LibGDX
- 25. java yansıması oluşturmak için alan/değer hashmap
- 26. libgdx oyun
- 27. LibGdx - Bir TextButton'da iki stil kullanın
- 28. Javascript dosyalarının içinde değil, farklı dosyalarda Typescript sourcemaps oluşturmak için gulp'u nasıl kullanabilirim?
- 29. Libgdx - Ekran
- 30. , libgdx kullanarak?
Wow! Harika cevap, teşekkürler Xoppa – amedina
Yardımlarınız için gerçekten minnettarım, Xoppa. Bu gölgelendiricileri test ettim ve 215 numaralı satırdaki fragment.glsl dosyasında bir hata buldum. Şimdi: vec4 specular = vec4 (0.0); 'vec3 specular = vec3 (0.0); Düzeltdim ve işe yarıyor ve kötü bir şey yapıp yapmadığımı bilmiyorum ama eğer Cubemap özniteliğini ayarlarsam, ortam ışığını ayarlayamıyorum, değil mi? Yapabilirsem nasıl yapabilirim? Yardım ettiğin için teşekkür ederim. – amedina
Teşekkürler, birkaç cihazda test etmek için biraz zaman bulabildiğim zaman, gazı kontrol edip değişiklikinize göre değiştireceğim. Gölgeyi tüm olası ışık ve malzeme kombinasyonlarıyla kontrol etmedim (ki bu neredeyse imkansızdır), bu yüzden bazı kombinasyonların sorunları olabilir. Ortam ışığı pratik olarak sadece gl_FragColor'a bir değer katıyor, böylece gerekirse kendi gölgeleyicinizin tabanı olarak kullanabilirsiniz. Bunu uygulamak da bu sorunun kapsamı dışındadır. – Xoppa