játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5468
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2524

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2193
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]
Asylum - Törzstag | 5468 hsz       Online status #212184   2018.09.25 09:33 GMT+1 óra  
Köszi, 3 hónapja volt az első kommit, de ha nettóben számolom akkor nyilván kevesebb.

A maradékos osztás, az maradékos osztás A mai GPU-kon már hardveresen implementálva van szal annyira nem vészes. Egy olyan ‘szabályról’ tudok, amit a cikkben leírtam, hogy ha az osztó kettőhatvány, akkor pozitív számokra a % m = a & (m - 1). De a 10 világos, hogy nem az.

Ilyenkor fel lehet tenni a kérdést, hogy ‘tényleg szükséges a 10?’ (vagy jó-e esetleg 16 is)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
full3nzo - Tag | 47 hsz       Online status #212183   2018.09.24 10:03 GMT+1 óra  
Hű...! Nagyon valósághű lett. Meg sem merem kérdezni, hogy mennyi időt forgattál bele.

Én még nagyon az alapoknál tartok, igaz most sok mindenre figyelek egy időben.

A maradékos osztást, hogy lehet megoldani vagy helyettesíteni?

Kód:
   gl_FragColor = finalColor;

    if(pos.x % 10 == 0){
       gl_FragColor *= vec4(0,1,1,0.7) * 3.0;
    }


Ezt így nem lehet megoldani arra már rájöttem, de a 10-el maradék nélkül osztható ismétlődéseket kellene elkapnom.

Köszönöm előre is!

Ezt a hozzászólást full3nzo módosította (2018.09.24 10:23 GMT+1 óra, 21 nap)

   
Asylum - Törzstag | 5468 hsz       Online status #212175   2018.09.17 18:55 GMT+1 óra  
Végre elkészült... Bár nem az eddigi legnehezebb munkám, mégis büszke vagyok rá:

https://darthasylum.blog.hu/2018/09/17/ocean_rendering
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
full3nzo - Tag | 47 hsz       Online status #212166   2018.09.03 19:57 GMT+1 óra  
Köszönöm!

   
Asylum - Törzstag | 5468 hsz       Online status #212165   2018.09.03 17:03 GMT+1 óra  
A gl_position-t inkább ne olvasd a vertex shaderben (kimeneti attrib). A fordító ugyan feltehetőleg megoldja, de a szabvány nem rögzíti; szervezd át a kódot, hogy a varying-ot írd először és csak a végén a gl_Position-t.

Egyébként meg ajánlom a blogomon levő Modern OpenGL cikket (még ha nem is nulláról mutat be mindent).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
full3nzo - Tag | 47 hsz       Online status #212164   2018.09.03 09:33 GMT+1 óra  
Köszönöm a gyors választ! Hibát a következő ponton vétettem:

Kód:
attribute vec4 a_position;
attribute vec3 a_normal;
attribute vec2 a_texCoord;
attribute vec4 a_color;

uniform mat4 u_MVPMatrix;
uniform mat3 u_normalMatrix;

uniform vec3 u_lightPosition;

varying float intensity;
varying vec2 texCoords;
varying vec4 v_color;
varying vec4 v_position;
varying vec4 v_mypos;

void main() {
    vec3 normal = normalize(u_normalMatrix * a_normal);
    vec3 light = normalize(u_lightPosition);
    intensity = max( dot(normal, light) , 0.0);

    v_color = a_color;
    texCoords = a_texCoord;

    gl_Position = u_MVPMatrix * a_position;
v_position = gl_Position;
v_mypos = a_position;
}


A v_position.y értékét használtam így nem csoda, hogy a képpozíciót értem csak el.

Persze az sem volt világos egészen, hogy már a vertex shaderben rendelkezésre áll...

   
Asylum - Törzstag | 5468 hsz       Online status #212163   2018.09.03 00:34 GMT+1 óra  
Átpasszolod a vertex shaderből...
Normálokat meg úgy a legegyszerűbb debugolni hogy azokat rajzolod megvilágítás helyett. Ha rossz irányba mutatnak, akkor valszeg fordítva vektorszoroztál.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
full3nzo - Tag | 47 hsz       Online status #212161   2018.08.31 19:47 GMT+1 óra  
Sziasztok!

LibGDX/openGL: segítségével futásiidőben létrehoztam egy mesh objektumot, amit shaderezni szeretnék - ez egy plane alapú heightmap. Valami gond keletkezett, mert valószínű, hogy a normálok nem jó irányba tartanak.

Azt szeretném kérdezni, hogy tud valaki olyan módszert, amivel megtudnám jeleníteni a normálvektorokat?

Egy weboldal segítségével hoztam létre ezt a dolgot, de ott is a normálok helytelen irányáról beszélnek - igaz megoldást is írtak, de én nem igazán értettem. A végső cél a multitextúrázás lenne, de egyelőre gond van az alapokkal...

Köszönöm a fáradozást annak aki átnézi a forrást!

https://stackoverflow.com/questions/20337797/libgdx-mesh-heightmap-normals-and-lights

Sikerült megoldanom a problémát. Így utólag nem tűnik nehéznek, de sok idő ráment... műveleti jelet kellett váltanom a normálszámításnál.

Még annyit szeretnék kérdezni, hogy fragment shaderben, hogy lehet megszerezni a 3D-s pixelpozíciót? gl_FragCoord-al csak a képkoordinátákat érem el: a multitextúrázásnál lenne szükségem a magasság értékre, hogy 4 textúra között készíthessek átmenetet ennek függvényében.

Ezt a hozzászólást full3nzo módosította (2018.09.02 19:19 GMT+1 óra, 42 nap)

   
Asylum - Törzstag | 5468 hsz       Online status #211783   2018.01.12 18:22 GMT+1 óra  
teljesen mindegy milyen driver (mindenfajta gpu-n jön), de én intelen nézem.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
versio - Tag | 673 hsz       Online status #211782   2018.01.12 18:16 GMT+1 óra  
amd vagy intel driver?
   
Geri - Törzstag | 2193 hsz       Online status #211781   2018.01.12 17:28 GMT+1 óra  
-----

Ezt a hozzászólást Geri módosította (2018.01.12 17:50 GMT+1 óra, 275 nap)

   
Asylum - Törzstag | 5468 hsz       Online status #211780   2018.01.12 16:37 GMT+1 óra  
Nagyon komoly problémába ütköztem opengl-ben, ha bárki tud segíteni azt nagyon megköszönöm:

https://stackoverflow.com/questions/48226659/opengl-framebuffer-attachments-leak-gpu-memory
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5468 hsz       Online status #211651   2017.11.04 18:18 GMT+1 óra  
Köszi
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Matzi - Szerkesztő | 2524 hsz       Online status #211650   2017.11.04 13:05 GMT+1 óra  
Kiraktam.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Asylum - Törzstag | 5468 hsz       Online status #211643   2017.10.31 12:05 GMT+1 óra  
Megjelent az új cikkem, amiben részletesen foglalkozok az OpenGL képességeivel (kivéve amikről már írtam külön).

http://darthasylum.blog.hu/2017/10/25/modern_opengl

Ha úgy gondoljátok ti is, akkor szerintem érdemes lenne kitenni a Blogszemlére.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5468 hsz       Online status #211434   2017.06.02 21:19 GMT+1 óra  
Na akkor tanulmányozd mélységeiben az első cikket.

Belépszintű megoldás az, ami le van írva (POM-al együtt számolt árnyék). Persze te nem ezt szeretnéd, na de.

Ha ki tudtál számolni egy depth-et a POM-hoz általában, akkor egy shadow map-hez is ki tudod számolni. Kérdés, hogy szükséges-e...

Szerintem általában nem...amikor a POM renderinget végzed, akkor a shadow map rendelkezésre állhat...akkor viszont megintcsak megfelelő módon tudsz árnyalni.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
racz16 - Tag | 4 hsz       Online status #211430   2017.06.02 16:01 GMT+1 óra  
Hát én ezt nem egészen értem. POM-hoz kiszámolok egy magasságot, amit ha a normál vektor irányában levonok a fragment position-ből, akkor megkapom az új, POM-os pozíciót. De ehhez nem hasonlíthatom a shadow map-et, mert a shadow mapbe még az eredeti felület mélysége van, nem a POM-os. A POM-os számításokat meg nem akarom a shadow map meg a scene lerenderelésekor is kiszámolni, ha nem muszáj.
De még ha ezt meg is tenném, akkor se lenne jó, nem? Mert pont az a lényeg, hogy nem az adott pozícióhoz tartozó mélység kell, hanem annak a pontnak a mélysége, ami abban a pontban látszik, ez a POM lényege. Szóval a shadow map textura koordinátáihoz kéne még valami offset is, nem?

   
Asylum - Törzstag | 5468 hsz       Online status #211423   2017.06.01 21:28 GMT+1 óra  
http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch36_relief.html
http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch43_shadowmaps.html

Egyébként baromi egyszerű: a shadow mappinghez mi kell? Egy depth érték, amihez hasonlítasz. De hát azt a POM-ban amúgyis kiszámoltad... Akkor meg mi a probléma?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
racz16 - Tag | 4 hsz       Online status #211421   2017.06.01 18:40 GMT+1 óra  
Sziasztok, valaki tud megoldást arra, hogy hogyan lehetne parallax occlusion mapping-et és shadow mapping-et együtt használni? Külön-külön működnek rendesen, de ha egy modell árnyékot vet egy olyan modellre, ami POM-ot használ, akkor árnyék az eredeti felületen jelenik meg, nem a benyomott felületen, tehát kb. a benyomott felület felett lebeg. Hogyan lehetne az árnyékot a megfelelő helyre igazítani?

   
Lord_Crusare - Törzstag | 1309 hsz       Online status #211187   2017.04.13 10:28 GMT+1 óra  
Ja oké, valamiért nem jutott eszembe jobbra görgetni

   
Asylum - Törzstag | 5468 hsz       Online status #211186   2017.04.13 10:24 GMT+1 óra  
Idézet
Lord_Crusare :
A cikk végén a két kép a randomizálás/rekonstrukcióról nálam ugyanarra az egy képre mutat.



Ami két kép egymás mellett (könnyebb összehasonlítani).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Lord_Crusare - Törzstag | 1309 hsz       Online status #211185   2017.04.13 09:46 GMT+1 óra  
Idézet
Asylum :
Kiraktam a GTAO cikket:

http://darthasylum.blog.hu/2017/04/12/ambient_occlusion



A cikk végén a két kép a randomizálás/rekonstrukcióról nálam ugyanarra az egy képre mutat.

   
Asylum - Törzstag | 5468 hsz       Online status #211184   2017.04.12 21:59 GMT+1 óra  
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210939   2017.02.04 07:06 GMT+1 óra  
Én azért használom, mert elmászna a beállított dir fény. Abból is csak egyet. De pl ha az ambient mondjuk lilás, a diffuse meg fehér, akkor az átmeneten szépen látszik is, meg az ambient nem szól bele a diffuse-ba, mert ugye a max miatt csak addig érvényesülnek a színek (egyesével), míg a diffuse fölé nem megy. Ha hozzá adjuk, akkor mindig lilásra színezi, és nem a hátoldalra fisszapattanó fényt "szimulálja".
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210937   2017.02.03 22:51 GMT+1 óra  
Ez is leírja, hogy mivel lusta disznó tone mappelni inkább a [0, 1]-be skálázza. Egyébként jó nagy baromságot ír, szóval ha ez új cikk, akkor egyes.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210935   2017.02.03 19:16 GMT+1 óra  
Megkeresem, mert "új"abb shaderről van szó, nem annyira régiről.

Mivel ambient, a directional fényről van szó konkrétan.

http://www.lighthouse3d.com/tutorials/glsl-tutorial/directional-lights/

(bár pontfényhez is ezt írják)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210934   2017.02.03 19:12 GMT+1 óra  
Ezt _azért_ alkalmazták annakidején mert nem volt még hardveres sRGB support (a pow pedig baromi drága volt). De ez csak egy része a megoldásnak, mert amint additív blendinget használsz elkerülhetetlen a _tone mapping_ is.

De ilyen max sosem volt. Az ambient + ndotl*diff-et skálázták be a [0, 1] intervallumba.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210933   2017.02.03 19:07 GMT+1 óra  
Jó, én hagyományos fénykezelésben gondolkodtam, a gtao meg ezek szerint PBR-es. Az viszont, hogy a fény mindig additív, csak részben igaz, mert hagyományosban a "szebb" az az, amit már említettem.

teljesen kiírva
Kód:
finalcolor=max(ambient*color, diffuse*color+specular);


itt az ambient az ambientek összege, már ha több lenne vhogy, a diffuse meg a diffuse-ok összege és a specular a specularok összege. a color a textúra példa kedvéért.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210931   2017.02.03 18:34 GMT+1 óra  
Te abszolút nem vagy tisztában a PBR-el (olvasd el a cikkemet...). A fények _mindig_ additívek.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210929   2017.02.02 20:58 GMT+1 óra  
Az ambient color minimum color, nem additív a fényhez. ezért a kettő közül a max érvényesül. Legalábbis úgy a szebb, meg a szín tartomány túlzottan fel menne.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210923   2017.02.02 18:51 GMT+1 óra  
?????

Kód:
outColor = ambient * ao + color / pi * dot(n, l);
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210916   2017.02.02 13:32 GMT+1 óra  
Ja hogy ja. Akkor ezt
Kód:
max(AO*color, color*diffuse)

-nál kell használni? ... Meg úgy általában az ssao-t is?
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210914   2017.02.02 12:50 GMT+1 óra  
1) árnyékolt textúra a PBR óta TILOS
2) a lightmap az csak far field occlusion, a GTAO akkor is segít (vagy nem is kell)
3) direkt megvilágításba TILOS AO-t rakni (csakis az ambiens fénybe)
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210911   2017.02.02 11:45 GMT+1 óra  
Igen, a közeli függönyökön szépen mutat, de jobb helyeken a függöny textúrája tartalmazná az árnyékot, vagy éppen hagyományos fényekkel és monokróm textúrákkal sem lenne ekkora különbség.
Általános jelenetekben árnyékolt textúrákat alkalmaznak és lightmapet.

De azért szépen működik.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210910   2017.02.02 11:12 GMT+1 óra  
Itt egy összehasonlító kép (GTAO). Annyit megjegyeznék, hogy a Sponza pont rossz ehhez, mert pre-bakelt AO-t tartalmaz sok helyen (pl. oroszlán).

C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5468 hsz       Online status #210900   2017.02.01 20:22 GMT+1 óra  
...

A gauss blur szeparálható (külön x, külön y).
A képlet pedig ott van wikipédián (normal distribution).

De a blogomon is: http://m.cdn.blog.hu/da/darthasylum/tutorials/C++/ch39_hdr.html
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210898   2017.02.01 20:14 GMT+1 óra  
Idézet
Asylum :
A point cloud hogy jön a bloomhoz?



Csak valami vec2 array-t neveztem felhőnek, mivel véletlen pontokat kéne generálnom egy körön belül. kb 32-t. Na mindegy, megírom azt, ha nincs egy jó array.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210896   2017.02.01 20:09 GMT+1 óra  
Qrvára nem tűnik el (most nem tudok shotot csinálni, majd holnap).

A point cloud hogy jön a bloomhoz?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210895   2017.02.01 20:02 GMT+1 óra  
GL 3.3-am van.

Jól néz ki innen. Csak az a gond ezekkel, hogy színekkel már eltűnik az egész. Ezért is hanyagolom a sima ssao-t.

---
Van vmi tipp "pont felhőre" bloom shaderhez? ki akarom azt is javítani, mert most kicsit csúnya, amit rögtönöztem.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210893   2017.02.01 19:44 GMT+1 óra  
GLSL 150 kell csak (és GL 3.2).
A fő problémát amúgy sikerült megoldani, még egy apróság van amit ki kell tenyésztenem.

C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
ddbwo - Tag | 1654 hsz       Online status #210891   2017.02.01 15:47 GMT+1 óra  
Én ránéznék, attól függően, hogy milyen shader model kell hozzá. Asszem van glsl 330-am. De azt se teszteltem még.
Persze segíteni nem biztos, hogy tudok.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Asylum - Törzstag | 5468 hsz       Online status #210877   2017.01.31 15:34 GMT+1 óra  
A GTAO-val kissé zsákutcában vagyok...ha nyitok neki egy projektet, akkor lenne kedvetek/időtök beszállni? (több szem többet lát alapon)

Az alapokhoz már megírtam a cikket, de jelenleg olyan pontatlanságokkal küzdök, ami gyak. lehetetlen hogy előálljon.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 570 hsz       Online status #210814   2017.01.18 12:42 GMT+1 óra  
Megpróbálhatnál simán kirajzolni egy fullscreen quadot egyetlen textúrával és egy nagyon egyszerű shaderrel. Ha az működik, akkor a shaderrel lesz a gond, ha nem, akkor működik, akkor pedig lehet tovább kutatni.

Amúgy ahogy Asylum is mondta, glEnable nem kell, ha shadert használsz.

   
Asylum - Törzstag | 5468 hsz       Online status #210812   2017.01.18 12:36 GMT+1 óra  
Kód:
GL.Enable(EnableCap.Texture2D);
GL.ActiveTexture(TextureUnit.Texture0);


Ez itt fordítva van (bár ugyanazt csinálja), de ha nincs shader, akkor minden stage-et külön kell engedélyezni (ha meg van shader, akkor nem kell glEnable)

Kód:
// ha NINCS shader
GL.ActiveTexture(TextureUnit.Texture0);
GL.Enable(EnableCap.Texture2D);

GL.ActiveTexture(TextureUnit.Texture1);
GL.Enable(EnableCap.Texture2D);

// stb.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
gopher - Törzstag | 496 hsz       Online status #210811   2017.01.18 12:05 GMT+1 óra  
Ha jol latom, itt ugyanez a problema: http://stackoverflow.com/questions/12936188/opentk-texture-showing-up-full-black

Probalj hibat kiiratni texture betoltes es kirajzolas utan is, hatha van valami (ezt javasoljak ott is) :
Kód:
#if DEBUG GLError error = glGetError(); if (error != GLError.NO_ERROR) { Console.WriteLine("Error {0} occured at {1}", error, "Location"); } #endif


De akar a shader-rel is lehet gond. Esetleg unsigned helyett signed, vagy float van atadva, ahol nem az kene, es linuxnal nem volt gond, itt igen.. Nem tudom, tippelgetek csak
   
Bukta - Tag | 308 hsz       Online status #210809   2017.01.18 10:02 GMT+1 óra  
Tuti, de most odáig jutottam, hogy a textura engedélyezéssel/tiltással van a baj. Van Shaderem is multitexturával, 5 db texturával, amit terrain előtt betöltök aztán render után unbindelek mindent és utánna renderelem a modelleket. Megint bindelek render, unbind. Na és itt van valami baj a bind/unbind-nél. Van hogy látszanak a modellek legalábbis ha nem unbindelem a terrain texturáit.
Ezek a fv-ek vannak (A Terrainbol vettem ki, de bind,unbind a modelleknél is igy néz ki):
Kód:
public void BindBuffers() {
   GL.BindBuffer(BufferTarget.ArrayBuffer, VBOid[0]);
   GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, Vertex.SIZE_IN_BYTE, 0);
   GL.VertexAttribPointer(1, 3, VertexAttribPointerType.Float, false, Vertex.SIZE_IN_BYTE, 3 * sizeof(float));
   GL.VertexAttribPointer(2, 2, VertexAttribPointerType.Float, false, Vertex.SIZE_IN_BYTE, 6 * sizeof(float));
   GL.BindBuffer(BufferTarget.ElementArrayBuffer, VBOid[1]);
}
public void BindTextures() {
   GL.Enable(EnableCap.Texture2D);
   GL.ActiveTexture(TextureUnit.Texture0);
   GL.BindTexture(TextureTarget.Texture2D, DirtTexture);
   GL.ActiveTexture(TextureUnit.Texture1);
   GL.BindTexture(TextureTarget.Texture2D, GrassTexture);
   GL.ActiveTexture(TextureUnit.Texture2);
   GL.BindTexture(TextureTarget.Texture2D, SandTexture);
   GL.ActiveTexture(TextureUnit.Texture3);
   GL.BindTexture(TextureTarget.Texture2D, StoneTexture);
   GL.ActiveTexture(TextureUnit.Texture4);
   GL.BindTexture(TextureTarget.Texture2D, BlendMap);
}
public void UnBindTextures() {
   GL.BindTexture(TextureTarget.Texture2D, 0);
   GL.Disable(EnableCap.Texture2D);
}
public void UnBindBuffers() {
   GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);
   GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
}


Kód:
terrain.BindBuffers();
terrain.BindTextures();
GL.DrawElements(PrimitiveType.Triangles, localizator.Area.TriangleCount, DrawElementsType.UnsignedInt, IntPtr.Zero);
terrain.UnBindTextures();
terrain.UnBindBuffers();
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
gopher - Törzstag | 496 hsz       Online status #210806   2017.01.18 08:35 GMT+1 óra  
@Bukta: a Bitmap-ban tuti betoltodik az adat, nem lehet hogy path problema van? Video driver rendben van?
   
Bukta - Tag | 308 hsz       Online status #210805   2017.01.18 07:44 GMT+1 óra  
Hali!

Elővettem az OpenGL-es projektemet - amit közbe-közbe szoktam fejlesztgetni. Eddig Ubuntu alatt csináltam, de most átjöttem win-re a VS2012 miatt. Na most olyan problémám van, hogy win-en nem jelenik meg az 1x16-os Bitmap-ból krehált textúra -ami egy ProgressBar-é. Meg a *.obj fájlokat se rajzolja ki, pedig ott már nagyobb mint 64x64-es textura van (mondjuk az 5x16os textura már megjelenik a ProgressBaron). Magában a kódban nincs logikai hiba, mert egérrel működik a kijelölés szóval ott vannak a modellek csak épp nem látni őket. Viszont a terrain faxán megjelenik, meg úgy a Controlok is csak ez az 1x16os textura nem. Mi lehet a baj? Van valami win speckó dolog amit be kell állítani? Vagy valamit elcsesztem, nem állítottam be és az ubuntu cseszett rá a win meg azt mondja h "megállj van!"?

Itt a textúra betöltő:
Kód:
public static Texture2D CreateTexture2D(Bitmap bmp) {
   int id = GL.GenTexture();
   GL.BindTexture(TextureTarget.Texture2D, id);
   BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
   GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);
   bmp.UnlockBits(data);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.Repeat);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.Repeat);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);
   GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

   return new Texture2D(id, bmp.Width, bmp.Height);
}


Ja igen C# mert OpenTK ami OpenGL wrapper, de mindig opengl-t írok be google-ba, ugyanaz a megoldás még ha c++-os a kód akkor is, már ha van valami gond. És általában OpenGLből nem tudok valamit és azért rossz. (Ami c#-ba GL.GenBuffer az ogl-be glGenBuffer ennyi a különbség.

Ezt a hozzászólást Bukta módosította (2017.01.18 08:03 GMT+1 óra, 635 nap)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Asylum - Törzstag | 5468 hsz       Online status #210790   2017.01.13 19:13 GMT+1 óra  
Bár tudom h kód önmagában nem sokat segít, de bemásolom. Egyébként nem vagyok már annyira szigorú az enginemmel kapcsolatban, szóval tudok adni teljes forráskódot igény esetén (csak el kell magyaráznom a fordítást).

Kód:
void qWin32Application::AdjustWindow(quint32& width, quint32& height)
{
    RECT    realrect;
    RECT    sourcerect;
    RECT    targetrect;
    LONG    screenwidth     = workarea.right - workarea.left;
    LONG    screenheight    = workarea.bottom - workarea.top;
    float    ratio          = (float)width / (float)height;

    GetWindowRect(hwnd, &sourcerect);
    DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &realrect, sizeof(RECT));

    LONG windowwidth    = realrect.right - realrect.left;
    LONG windowheight   = realrect.bottom - realrect.top;
    LONG errorwidth     = windowwidth - (sourcerect.right - sourcerect.left);
    LONG errorheight    = windowheight - (sourcerect.bottom - sourcerect.top);

    if( windowwidth > screenwidth )
    {
        windowwidth = screenwidth;
        windowheight = (LONG)floor(windowwidth / ratio);
    }

    if( windowheight > screenheight )
    {
        windowheight = screenheight;
        windowwidth = (LONG)floor(windowheight * ratio);
    }

    // get back window bounds
    LONG targetwidth = windowwidth - errorwidth;
    LONG targetheight = windowheight - errorheight;

    targetrect.left     = (screenwidth - targetwidth) / 2;
    targetrect.top      = (screenheight - targetheight) / 2;
    targetrect.right    = (screenwidth + targetwidth) / 2;
    targetrect.bottom   = (screenheight + targetheight) / 2;

    MoveWindow(hwnd, targetrect.left, targetrect.top, targetwidth, targetheight, FALSE);
    GetClientRect(hwnd, &sourcerect);

    // update client area
    width = (quint32)(sourcerect.right - sourcerect.left);
    height = (quint32)(sourcerect.bottom - sourcerect.top);
}


Kód:
void qWin32Application::AdjustFrame(RECT& out, quint32 width, quint32 height, DWORD style)
{
    LONG screenwidth = workarea.right - workarea.left;
    LONG screenheight = workarea.bottom - workarea.top;

    out.left    = (qint32)(screenwidth - width) / 2;
    out.top     = (qint32)(screenheight - height) / 2;
    out.right   = (qint32)(screenwidth + width) / 2;
    out.bottom  = (qint32)(screenheight + height) / 2;

    AdjustWindowRectEx(&out, style, FALSE, 0);
}
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Instalok - Tag | 570 hsz       Online status #210785   2017.01.10 17:42 GMT+1 óra  
Asylum: A lentebbi kódban az AdjustWindow mit csinál? Az AdjustFrame gondolom a rect-et állítja be a paraméterei alapján, utána pedig átméretezed az ablakot.

További apróság csak, hogy a fullscreen-re való állításkor csak az if (hrc) előtti rész különbözik, szóval elég annyit az if-else-be rakni gondolom.

   
Korábbi postok
> 1 < [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [82]