- iPhone topik
- Samsung Galaxy S24 - nos, Exynos
- Samsung Galaxy Watch6 Classic - tekerd!
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy S23 Ultra - non plus ultra
- Milyen okostelefont vegyek?
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Google Pixel 7a - venni vagy nem venni?
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
Hirdetés
-
The First Descendant - Napokon belül megkapjuk a megjelenési dátumot
gp Hamarosan vége a várakozásnak, reméljük a fejlesztők tartják magukat az ígéretükhöz.
-
Nyárköszöntő hardverszemle
ph A desktop gép, notebook és ház nyomába sokféle periféria szegődik, sőt, még egy VR headset is tiszteletét teszi heti rovatunkban.
-
EU: a bankoké a felelősség, ha AI-t használnak
it Az EU tőzsdefelügyelete szerint ha AI-t használnak a bankok és befektetési cégek, akkor övék a felelősség.
Új hozzászólás Aktív témák
-
Frakk
tag
Helló!
Úgy láttam nincs ilyen téma, úgyhogy nyitottam egy topicot.
Az a gondom, hogy OpenGLben ködöt szeretnék csinálni. Illetve az már sikerült is, csak nem úgy ahogy szeretném:
GLfloat fogColor[4]= {0.50, 0.50, 0.80, 1}; // Fog Color
glFogi(GL_FOG_MODE, GL_LINEAR); // Fog Mode
glFogfv(GL_FOG_COLOR, fogColor); // Set Fog Color
glFogf(GL_FOG_DENSITY, 0.5); // How Dense Will The Fog Be
glHint(GL_FOG_HINT, GL_NICEST); // Fog Hint Value
glFogf(GL_FOG_START, 0); // Fog Start Depth
glFogf(GL_FOG_END, 5); // Fog End Depth
glEnable(GL_FOG);
Ezzel a kóddal ugyan lesz köd, de nem a pixelek távolsága, hanem a z koordinátájuk szerint számít, ami ugye nem valóságos eredményt ad, és ez (főleg szélesebb látószögeknél) elég idegesítő. Na én megpróbáltam utánnanézni googlen es azt találtam, hogy ha ezt a sort beírom a kód elé:
glFogi(0x855A, 0x855B);
akkor távolság szerint fogja számítani. Úgy is lett, csakhogy így meg most nem minden pixelre végzi el a műveletet, hanem csak vertexekre, ezér a túl nagy polygonokra nem használható. Nem tudja vki, hogy lehet megcsinálni, hogy pixelenként, és távolságszerint számoljon? -
GBX
aktív tag
Nos, van más fajta köd is:
radial fog vagy mi a fene. ez a camerától mért távolságnak megfelelően csinálja a ködöt (sztem te ezt akartad)
itt egy ppt: http://developer.nvidia.com/attach/6729
lehet ködöt még részecskerendszerrel is csinálni vagy (féli átlátszó)billboardokkal.
ezenkívül van rá lehetőség hogy esetleg pixelshaderrel egyfalyta volometric fog-ot csinálj.
Sok sikert.HiTech 486 DX4 120Mhz AMD, 24MB 36bit RAM, 800 MB Conner HDD
-
Frakk
tag
Ja, hát radial fog, csak az a baj, hogy nem pixelenként végzi a ködösítést, hanem vertexenként, így pl ha egy bazi nagy négyszög közepén áll az ember, aminek a sarkai ködben vannak, akkor az egész négyszög úgy fog kinézni mintha ködben lenne, még akkor is, ha a közepének nem kéne olyannak lennie. De mindegy már inkább megoldom úgy a problémát, hogy nem csinálok bazi nagy négyszögeket és akkor jó.
Pixelshaderhez meg nem értek.
Azér kösz a segítséget. -
Frakk
tag
Uhm. Akkor majd utánnanézek, kösz. De most asszem inkább belenyugodtam a per-vertex radial fogba, csak tegnapelőtt egy kissé belejöttem az OpenGL programozásba, és nem akartam megelégedni. De most, hogy így belegondolok, arra, amire nekem kell, talán még jobb is hogy vertexenként csinálja, gondolom úgy gyorsabb, és ha végülis nincsenek túl nagy polygonok, akkor ugyanolyan jó képet ad.
[Szerkesztve] -
Protezis
őstag
Win XP alatt szeretném lefordítani a suliban linux alatt működő forrásfájlokat.
MinGW-vel dolgozok. Leszedtem a glut-ot, elvileg jó helyre be is másoltam a fájlokat.
De nem akarja az igazat. Az alábbi csak egy példaprogram:
// Friendly.c
// A Friendly OpenGL Program
// OpenGL SuperBible, 2nd Edition
// Richard S. Wright Jr.
#include <GL/glut.h>
// Called to draw scene
void RenderScene(void)
{
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT);
// Flush drawing commands
glFlush();
}
// Setup the rendering state
void SetupRC(void)
{
// Set clear color to blue
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
// Main program entry point
int main(void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow(''Simple'');
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
return 0;
}
Fordításnál kibök jónéhány undefinied reference to... hibát.
pl: glutInitDisplayMode, glutMainLoop stb.
Egy oldalon találtam leírást a glut telepítéséhez, és az ott lévő példaprogram lefordul a köv. módszerrel:
gcc testgl.c –o testgl -lopengl32 -lglu32 -lglut32
A fenti példa viszont így se. Mi lehet a gond? Windowshoz ragaszkodom! -
Protezis
őstag
Bővebben: link alapján beállítottam a Borland fordítót. Az előbbi simple.c-t le is fordítja, viszont megint van pár dolog amit nem fordít le. A gl.h-ban talál declaration syntax errort az 1153-1177-ig tartó sorokban. Nem értem
Akár az előbbi, akár az ehhez a hsz-hez kapcsolódó helpet szívesen veszek -
Protezis
őstag
UP!
-
Protezis
őstag
UP!
-
ALI_G
veterán
nemmegy a fordítás
[link] ez alapján csináltam mindent, de pár dolog nem stimmelt vele:
-Győződjünk meg arról, hogy a c:\BORLAND\BCC55\Bin\ könyvtárban található konfigurációs file-ok tartalmazzák a következőket:
* bcc32.cfg
-I''c:\Borland\Bcc55\include'' -L''c:\Borland\Bcc55\lib''''
* ilink32.cfg
-L''c:\Borland\Bcc55\lib'' -L''c:\Borland\Bcc55\lib\PSDK''
ez a két fájl nem is létezett eleve, nosza neki csináltam mindkettőt. Belemásoltam a fent írtakat (pl: I''c:\Borland\Bcc55\include'' -L''c:\Borland\Bcc55\lib'' /- kötőjel nélkül -/).
Készítsük el a Borland-specifikus glut32.lib könyvtárat:
implib glut32.lib glut32.dll
Ezt nem igazán vágtam, de bemásoltam cmd-be. le is futott vmi. csinált 1 fájlt a BCC55-ön belül. glut32.lib ezt.
Aztán másoltam is (Másoljuk át a következő file-okat: ...)
Majd fordítás, egy simpla fájl: hibaüzenet-tel zajlott le
ERROR E2075 Incorrect confuguration file option: borland\bcc55\include
Mit rontottam el? (sürgős, pls)
csak tudnám, hogy ha CODE-ba rakom a ''-t akkor miért rakja át ' ' -ra
[Szerkesztve] -
_Petya_
őstag
-
ALI_G
veterán
ezer kösz, mindkettőtöknek
Petya: azért, mert az alaplapom gariztatni van, még mindig fent csücsülnek rajta Pesten, már több mint egy hete, és haver gépén kell vmit kreálnom (már így is szétberheltem rakás progival, és még csak pár dolog van fent, amik nékülözhetetlenek nekem. Neki tuti nékülözhető, geográfus nem is bika a gép, akad össze-vissza, de több mint a semmi) -
ALI_G
veterán
Nem ez volt a baj a BC még mindig ugyanazt a hibát adja vissza.
A VC pedig 102 hibát talál vmi súlyos user error lehet itt. pls vki help -
ALI_G
veterán
meg van, a lib fájlom nem volt jó...kicseréltem és műxik minden.
-
yksz
aktív tag
Pls help! Delphi alatt mert még ebben írom a progikat a mipmapped textúrák helyett csak egy pár potty jelenik meg, a tutrialos jól megírt kóddal is. Mi lehet a gond?
Fly away my precious knowledge fly far away
-
yksz
aktív tag
[link]
glBindTexture(GL_TEXTURE_2D,texture[2]);
GLTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D,3,TextureImage[0].sizeX,textureimage[0].sizeY,GL_RGB,GL_UNSIGNED_BYTE,textureimage[0].data);
nagyjából így néz ki minden.Fly away my precious knowledge fly far away
-
Frakk
tag
Bocs hogy csak most írok, de teljesen kiment a fejemből ez a topic. Ha nem mipmapos texturát, hanem simát használsz, akkor normális a kép?
Addig még nézegetem, hátha rájövök mi lehet a hiba. Én már csináltam mipmapot, és működött is, mondjuk szvsz csúnya ha lapos szögben nézünk rá, szal azon kívül hogy kipróbáltam, nem használom sehol. -
Frakk
tag
Hát ez az én személyes véleményem a mipmapingról. Ugyanis azt teszi, hogy ha egy pixeled alatt több texel is van, akkor ott kisebb felbontású textúrát használ. Ennek az az eredménye, hogy ha lapos szögben nézel rá, akkor a távolsághoz képest nagyon kicsi textúrát választ, ezért lesz minden olyan elmosódott. Az anizotróp szűrés ugyanazt a problémát oldja meg mint a mipmaping, csak az normálisan. Ott az egy pixel alatt lévő texelek színét átlagolja. Ennek a hátránya a mipmapinghoz képest, hogy lassítja a renderelést (persze ez függ attól, hogy hányszoros, és hogy milyen vidkarid van), és ha a taxtúra túl messze van, vagy túl laposszögben nézel rá, akkor túl sok texel van egy pixel mögött, és nem tudja mindet átlagolni, tehát a látvány kb olyasmi lesz mint szűrés nélkül. Én ezt a saját progimban úgy oldottam meg, hogy egyszerűen távolságtól függően lecserélem a textúrákat mindig egyre kisebbre, tulajdonképpen ugyanúgy mint a mipmaping, azzal a különbséggel, hogy ott nem a távolság számít, hanem az hogy egy pixel mögött hány texel van (a mipmaping úgy választja ki a textúra méretét, hogy csak egy legyen).
-
Frakk
tag
Várjálcsak, lehet amúgy hogy a textúra méretével van a baj. Annak ugyanis ha mindenigaz szélességnek és magasságnak meg kell egyeznie, méghozzá úgy, hogy kettő hatvány legyen. Pl: 1024*1024, 512*512, 256*256, és így tovább.
szerk: bár én továbbra is azt tanácsolom, hogy ne használj mipmapingot, inkább válassz mindig a távolságnak megfelelő méretű textúrát, és kapcsold be az anizot.
[Szerkesztve] -
c4-eXp
aktív tag
Nem feltétlenül kell négyzet alakúnak lennie a textúrának, az oldala pedig különbözhet 2 hatványától. Legalábbis a mostani videokártyák már mind támogatják ezt. Pl. a radeon 9200-as, szóval nem is kell a legmodernebbekre gondolni. Persze ha a vidkari egy régebbi modell, akkor lehet ez a probléma.
Egyébként meg bocs, hogy dx fan létemre beleóbégatok a topikodba.while (state(Korso) != _BROKEN) go(Korso, &Kut);
-
timoti2002
csendes tag
Hali!
Elég analfabéta vagyok Opengl-ben. Egy progrmaot kell leadnunk e tárgyból. Ehhez megkéne csinálnom azt, hogy ha rohangálok a hóemberek között, NE MENYEK ÁT RAJTUK! Valaki tudna segíteni, mert számomra ez kivitelezhetetlen.
Előre is köszönök minden segítő szándékot! -
sghc_toma
senior tag
válasz timoti2002 #37 üzenetére
ahOi!
Ha nem kell túl nagy precizitás, akkor megadod a hóembereknek és a rohangáló akárminek a befoglaló gömbjének a sugarát. Két gömbre pedig már egyszerűen el lehet végezni az ütközésdetektálást:
hóembert bef. gömb sugara: R, középpontja: P(X,Y,Z)
a rohangáló akármit bef. gömb sugara: r, középpontja: p(x,y,z)
ha | p(x,y,z)-P(X,Y,Z) | <= R+r, akkor a két gömb ütközik.
Innen már könnyen le lehet kezelni a dolgot (csak olyan irányba engeded mozogni, hogy ne ütközzön a két gömb.)
amúgy NeHe-n van egy collision detection tutorial: [link]in asm we trust
-
Frakk
tag
válasz timoti2002 #37 üzenetére
Ha tudsz rajzolni OpenGL-ben, akkor ez a feladat OpenGL-től gyakorlatilag független, és azt kell csinálnod, amit toma írt neked. OpenGL-ben csak rajzoló függvények vannak, minden mást neked kell megprogramozni.
-
sghc_toma
senior tag
most elgondolkodtam a dolgon, és eszembe jutott vmi. lehet, hogy már alkalmazzák ezt az eljárást, lehet, hogy teljesen használhatatlan, ez most egy ilyen fárasztó nap utáni hirtelen gondolat: minden egyes ojjektumnak adok egy színt(mindegyiknek mást, ez max 2^24(32?)-en db ojjektum). Ezután a tényleges render előtt renderelem a scene-t úgy,h a háttér mondjuk fekete, az objektumok meg a unique color-juknak megfelelő színűek (persze alpha blending, lightning off). Ekkor a framebuffer-ből kiolvasom a pixelek színeit, és ha van két eltérő színű egymás mellett, akkor a két tárgy ütközik..
[add]
ja, hülye vok, ez csak 2d-ben okk. éppen most csinálunk egy barátommal egy point&click játékot, és én most folyton 2d-ben gondolkodom.. meg fáradt is vagyok pöttyet.
...de a z-bufferrel talán lehetne vmit kezdeni. ha megegyezik az eltérő pixelek z-értéke, akkor ütközés van. vagy nem? áááá, fáradt vok gondolkodni. majd holnap, kipihenten...
[Szerkesztve]in asm we trust
-
ngy_tms
csendes tag
Sziasztok!
Van egy kockám, azon textúra van. A kocka zöld.
A texturán van egy piros kör. Körülötte fekete a textúra.
Azt szeretném, hogy valami blendinggel a fekete eltűnjön
és alatta a zöld látsszon.
légyszi dobjatok meg egy maillel is ha válaszoltok, köszi.
ngy_tms@yahoo.com -
QuarK
senior tag
ha jol ertelek, akkor zold szinu kockat akarsz, amin piros folt van; akkor pedig ket menetben kell rajzolnod (hacsak nem multitexturazast hasznalsz, es a zold szint is, mint textura feszited fel a kockara)
glColor4f( 0.0, 1.0, 0.0, 1.0);
glBegin( GL_QUADS); // vagy amivel kirajzolod a kockat
glVertex3f( x, y, z);
...
...
...
glEnd();
majd
glEnable( GL_TEXTURE_2D);
glBindTexture( GL_TEXTURE_2D, pirospotty);
glTexEnvf( GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_DECAL);
glEnable( GL_BLEND);
glBlendFunc( GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
glBegin( GL_QUADS);
glTexCoord2f( s, t);
glVertex3f( x, y, z);
...
...
...
glEnd();
glDisable( GL_BLEND);
glDisable( GL_TEXTURE_2D);
fontos, hogy ha z pufferelest is csinalsz, akkor glDepthFunc( GL_LEQUAL);... meg glEnable( GL_CULL_FACE); es glCullFace( GL_BACK);
meg feltetelezem, hogy nem ratyi glut-al rajzolod ki a kockat
[Szerkesztve] -
Frakk
tag
Ha jól értelmeztem QuarK kódját, akkor az erre is jó, egyszerűen csak nem rajzolod ki először zölden a kockát ( tehát csak az kell, ami a ''majd'' után van ). Viszont ha azt akarod, hogy a hátul lévő piros körök is látszódjanak ( akkor lesz hat db ), akkor a hátsólap eldobást ki kell kapcsolnod ( glDisable( GL_CULL_FACE); ).
-
QuarK
senior tag
egyszerűen csak nem rajzolod ki először zölden a kockát [...] a hátsólap eldobást ki kell kapcsolnod
ugy ahogy mondod
es akkor most nekem lenne ket kerdesem:
az egyik, hogyan lehet kikapcsolni a vsync-et? nalam most PFD_DOUBLEBUFFER flag a pixelformatdescriptor-nal, es SwapBuffers( hDC) minden frame vegen; es igy vagy 60, vagy 30, stb... lehet a frame/sec.
a masik, hogy egy kis overbright-ot szeretnek. jelenleg ugy oldom meg, hogy kis meretben lerenderelem a kepet, ezt glReadPixels-el beolvasom, az eleg fenyes keppontokat megtartom, a tobbit feketere cserelem, elmosom, feltoltom texturanak, majd rendes meretben is render, es erre rablendelem az elmosott kepet. van-e erre mas mod, ami gyorsabb? mert a glReadPixels feler egy glFinish-el, es bar boven 10ms alatt van a kis es a nagy kep renderelese, 30fps-re leesik a framerate.
vagy valami mas modszer, hogy kis ''ragyogast'' vigyek a kepbe... -
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen