- Melyik tápegységet vegyem?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Nvidia GPU-k jövője - amit tudni vélünk
- Hővezető paszták
- Milyen belső merevlemezt vegyek?
- Kormányok / autós szimulátorok topikja
- Hogy is néznek ki a gépeink?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Milyen monitort vegyek?
- Azonnali alaplapos kérdések órája
Új hozzászólás Aktív témák
-
s3nsitivity
addikt
Sziasztok!
Van valakinek valami irodalma, jegyzete bármi értékes olvasni valója kezdőknek OpenGL programozáshoz?
Java fejlesztő vagyok így a programozás nem áll túlzottan messze tőlem.
De most specifikusa OpenGL programozásra van szükségem és ebbe még bele se szagoltam.
Felütöttem a Guglit és ebbe a topikba futottam bele először így gondoltam előbb bekérdek ide. -
szucs.miki
csendes tag
Sziasztok! Szeretnék egy kört textúrázni. Tudna valaki segíteni ebben?
Ezt a függvényt használom:
void Kor(int n, double Radius,float x, float y)
{
int i;
GLfloat angle;
GLfloat f;if(n < 3)
n = 3;glBegin(GL_TRIANGLE_FAN);
glVertex2f(0,0);
for(i = 0, angle = 0.0; i <= n; i++, angle += 2.0 * GL_PI / n)
{
glVertex2f(x + Radius * cos(angle), y + Radius * sin(angle));
}
glEnd();
} -
icons
addikt
Üdv!
Tudna valaki valami jó angol nyelvű irodalmat javasolni?
Nem kifjezetten OpenGL specifikus kell, de az is jóJelenleg a Real-Time Rendering Third Edition-t és az OpenGL 4.0 Shading Language Cookbook-ot olvasom/tanulom/próbálgatom.
A lényeg az lenne, hogy egy picit megértsem az egész folyamat működését. Részben vizsgára kell (nem BME), de érdekel is. A legfontosabb az elméleti rész, tehát scene graph, view frustum, shadink, ray tracing, lighing (modellek pl), deferred shading, stbstb.
Köszi!
-
ubid
senior tag
Még egy apró kérdés :
Megfelelően éles képet hogyan tudnék készíteni ?
300x300 -as-t eléggé elmossa sajnos.
vagy valami mód hogy kisimítsam ? -
ubid
senior tag
-
ubid
senior tag
válasz
Jester01 #193 üzenetére
Tuti hogy jó helyen van a kép.
Egy másik projektet amit nem én írtam... letöltöttem az asztalra... onnan a project fájllal megcsináltam és a textúrázás működik.
Ugyan olyan könyvtárstruktúrába pakoltam énis a képemet.
Nem tudnál esetleg privátba segíteni ha elküldöm a teljes kódot ? nagyon fontos lenne , hálás lennék érte.
-
ubid
senior tag
válasz
Jester01 #191 üzenetére
Átírtam úgy ahogy mondtad .
Hibát nem ír, viszont DEBUG breakpointolva látható hogy nem veszi fel a file-t .
A mostani kód :
AUX_RGBImageRec *LoadBMP(char *Filename) // BMP-ket tölti be
{
FILE *File=NULL; // Fájl kezelő
File=fopen(Filename,"r"); // A fájl létezik-e
if (File) // Ha létezik a fájl
{
fclose(File);
return auxDIBImageLoad(Filename); // Betölti a bmp-t
}
return NULL; // Ha nem...
}
int LoadGLTextures() // Betölti a bitmapokat és textúrává alakítja
{
int Status=FALSE;
AUX_RGBImageRec *TextureImage[1]; // Textúra tárolása
memset(TextureImage,0,sizeof(void *)*1);
// tegla.bmp
if (TextureImage[0]=LoadBMP("kep/kep.bmp"))
{
Status=TRUE;
glGenTextures(1, &texture[0]);
// Mipmap textúra
glBindTexture(GL_TEXTURE_2D, texture[0]);
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);
}
if (TextureImage[0])
{
if (TextureImage[0]->data)
{
free(TextureImage[0]->data);
}
free(TextureImage[0]);
}
return Status;
}Debuggerben a látható hiba :
És már amikor bele akarom rakni .. tehát File=fopen(Filename,"r"); megnyitom s áttolom a File-ba. már akkor se jó.
-
Jester01
veterán
Össze-vissza kevered a wchar és ansi dolgokat. Érdekes módon az előző üzenetben még auxDIBImageLoadW volt és azért sírt, hogy nem wchar-t adsz neki. Most meg auxDIBImageLoadA van és azért sír mert wchar-t kap. Nem értem. Esetleg átállítottad az aktív konfigurációt a projektnek? Mindenesetre jelen verzóban a LoadBMP függvény argumentumát kellene const char* (avagy LPCSTR) típusra átírni.
-
ubid
senior tag
válasz
Jester01 #189 üzenetére
Ezt kifejtenéd légyszives részletesebben ?
Arra gondolsz pl hogy wchar_T * ... stbt kéne használni a filename beolvasásához ?
ha igen ...
így használtam :
[AUX_RGBImageRec *LoadBMP(wchar_t *Filename) // BMP-ket tölti be
{
FILE *File=NULL; // Fájl kezelő
File=fopen(Filename,"r"); // A fájl létezik-e
if (File) // Ha létezik a fájl
{
fclose(File);
return auxDIBImageLoad(Filename); // Betölti a bmp-t
}
return NULL; // Ha nem...
}
int LoadGLTextures() // Betölti a bitmapokat és textúrává alakítja
{
int Status=FALSE;
AUX_RGBImageRec *TextureImage[1]; // Textúra tárolása
memset(TextureImage,0,sizeof(void *)*1);
// tegla.bmp
if (TextureImage[0]=LoadBMP("kep/kep.bmp"))
{
Status=TRUE;
glGenTextures(1, &texture[0]);
// Mipmap textúra
glBindTexture(GL_TEXTURE_2D, texture[0]);
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);
}
if (TextureImage[0])
{
if (TextureImage[0]->data)
{
free(TextureImage[0]->data);
}
free(TextureImage[0]);
}
return Status;
}így aláhúzgálta ismét a filename dolgokat.
újabb hibákat írt :
Error 2 error C2664: 'auxDIBImageLoadA' : cannot convert parameter 1 from 'wchar_t *' to 'LPCSTR'
Error 1 error C2664: 'fopen' : cannot convert parameter 1 from 'wchar_t *' to 'const char *'
Error 3 error C2664: 'LoadBMP' : cannot convert parameter 1 from 'const char [12]' to 'wchar_t *'
-
ubid
senior tag
Valaki erre a hibára tud kézenfekvő megoldást ?
Típusegyeztetéssel van a hiba textúrázásnál, ezért már be se tölti a fájlt magát a tömbbe.Error 2 error C2664: 'auxDIBImageLoadW' : cannot convert parameter 1 from 'char *' to 'LPCWSTR' c:\users\gery\desktop\snake- beadandom\snake- beadandom\snake.cpp 32 1 Snake- beadandom
-
ubid
senior tag
Helló!
Egy olyan embert keresnék aki el tudná magyarázni a textúrázást, valamint tudna egy picit segíteni!
Hálás lennék érte.
Kérem írjon privátba.
Köszönöm!
-
szunyog199
tag
válasz
szunyog199 #185 üzenetére
Már tárgytalan.
-
szunyog199
tag
Üdv mindenkinek!
Segítségre lenne szükségem. Van egy opengl programom amiben van két gömb(bolygó), ezeket az objektumokat szeretném elhelyezni egy kockába, aminek a belső oldalán egy textura van. Skybox-al próbálkozok már egy ideje, de nem jön össze sehogy sem.Első körben létrehoztam egy külön fájlba a skyboxot, csak hogy le tudjam ellenőrizni, biztos hogy a textúra a belső oldalán jelenik meg a kockában(csak egy textúrát használok). Csatolom a kódot. Megtenné, hogy valaki leellenőrzi nekem?
Próbáltam úgy csinálni, hogy a kocka lapjait ellentétes irányba koordinálom, de a végén mindig az oldalak külső részéén jelenik meg a textúra. Mi lehet a gond?import com.sun.opengl.util.Animator;
import com.sun.opengl.util.texture.Texture;
import com.sun.opengl.util.texture.TextureData;
import com.sun.opengl.util.texture.TextureIO;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.InputStream;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
public class Skybox implements GLEventListener {
private GLU glu = new GLU();
static double rotx=0, roty=0;
public static void main(String[] args) {
Frame frame = new Frame("Simple JOGL Application");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new Skybox());
frame.add(canvas);
frame.setSize(640, 480);
final Animator animator = new Animator(canvas);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// Run this on another thread than the AWT event queue to
// make sure the call to Animator.stop() completes before
// exiting
new Thread(new Runnable() {
public void run() {
animator.stop();
System.exit(0);
}
}).start();
}
});
// Center frame
frame.setLocationRelativeTo(null);
frame.setVisible(true);
animator.start();
}
private Texture starTexture;
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
try {
InputStream stream = getClass().getResourceAsStream("stars.png");
TextureData data = TextureIO.newTextureData(stream, false, "png");
starTexture = TextureIO.newTexture(data);
}
catch (IOException exc) {
exc.printStackTrace();
System.exit(1);
}
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
if (height <= 0) { // avoid a divide by zero error!
height = 1;
}
final float h = (float) width / (float) height;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h, 1.0, 20.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glLoadIdentity();
gl.glPushMatrix();
gl.glClearColor(5, 6, 7, 10);
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glDisable(GL.GL_DEPTH_TEST);
gl.glDisable(GL.GL_TEXTURE_2D);
gl.glDisable(GL.GL_CULL_FACE);
starTexture.enable();
starTexture.bind();
glu.gluLookAt(2, 3, 0, 0, 0, 0, 0, 1, 0);
gl.glBegin(GL.GL_QUADS);
gl.glTexCoord2f(0, 0); gl.glVertex3f( 0.5f, -0.5f, -0.5f );
gl.glTexCoord2f(1, 0); gl.glVertex3f( -0.5f, -0.5f, -0.5f );
gl.glTexCoord2f(1, 1); gl.glVertex3f( -0.5f, 0.5f, -0.5f );
gl.glTexCoord2f(0, 1); gl.glVertex3f( 0.5f, 0.5f, -0.5f );
gl.glTexCoord2f(0, 0); gl.glVertex3f(-0.5f, 0.5f, -0.5f );
gl.glTexCoord2f(1, 0); gl.glVertex3f( -0.5f, 0.5f, 0.5f );
gl.glTexCoord2f(1, 1); gl.glVertex3f( -0.5f, -0.5f, 0.5f );
gl.glTexCoord2f(0, 1); gl.glVertex3f( -0.5f, -0.5f, -0.5f );
gl.glTexCoord2f(0, 0); gl.glVertex3f( -0.5f, -0.5f, 0.5f );
gl.glTexCoord2f(1, 0); gl.glVertex3f( 0.5f, -0.5f, 0.5f );
gl.glTexCoord2f(1, 1); gl.glVertex3f( 0.5f, 0.5f, 0.5f );
gl.glTexCoord2f(0, 1); gl.glVertex3f( -0.5f, 0.5f, 0.5f );
gl.glTexCoord2f(0, 0); gl.glVertex3f( 0.5f, 0.5f, 0.5f );
gl.glTexCoord2f(1, 0); gl.glVertex3f( 0.5f, 0.5f, -0.5f );
gl.glTexCoord2f(1, 1); gl.glVertex3f( 0.5f, -0.5f, -0.5f );
gl.glTexCoord2f(0, 1); gl.glVertex3f( 0.5f, -0.5f, 0.5f );
gl.glTexCoord2f(0, 1); gl.glVertex3f( 0.5f, -0.5f, 0.5f );
gl.glTexCoord2f(0, 0); gl.glVertex3f( 0.5f, -0.5f, -0.5f );
gl.glTexCoord2f(1, 0); gl.glVertex3f( -0.5f, -0.5f, -0.5f );
gl.glTexCoord2f(1, 1); gl.glVertex3f( -0.5f, -0.5f, 0.5f );
gl.glTexCoord2f(0, 0); gl.glVertex3f( 0.5f, 0.5f, 0.5f );
gl.glTexCoord2f(0, 1); gl.glVertex3f( 0.5f, 0.5f, -0.5f );
gl.glTexCoord2f(1, 1); gl.glVertex3f( -0.5f, 0.5f, -0.5f );
gl.glTexCoord2f(1, 0); gl.glVertex3f( -0.5f, 0.5f, 0.5f );
gl.glEnd();
gl.glEnable(GL.GL_CULL_FACE);
gl.glClear(GL.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL.GL_TEXTURE_2D);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glPopMatrix();
}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
}
} -
ubid
senior tag
Csak a glut cuccait másolgattam be a helyükre....
exe nem volt.
igen. be van állítva
-
ubid
senior tag
Kicsit sikerült mahinálnom vele és most már csak ezt a hibaüzenetet kapom !
Ezt is külön ablakba...
valaki help légyszives !
-
ubid
senior tag
Helló!
Valaki tudna segíteni hogyan kell pontosan telepíteni / beállítani az OpenGL-hez a dolgokat ?
(win 7 - microsoft visual studio 2010 )
Néztem több is a neten, de nem jön össze sehogy sem .
E szerint csináltam ITT
a demo fájlt is beraktam...
futásnál :
1error : Error 4 error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source? c:\users\gery\documents\visual studio 2010\projects\openglglutproba\proba\proba\probaglut.cpp 175 1 proba4 warning :
az inculde fájlokra
(#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
)skipped when looking for precompiled header use c:\users\gery\documents\visual studio 2010\projects\openglglutproba\proba\proba\probaglut.cpp
köszi a segítséget !
-
zsampe
csendes tag
Üdv!
Nem vagyok az OpenGL nagy tudora, ezért írok. Kene nekem 1 igen komoly segítség ezen a téren. Olyan embert keresek aki nagyon vágja a témát és 3-5 napon belül képes lenne nekem össze dobni 1 működő kész programot. (akár ki is fizetem fáradozásait
, de most tényleg nagy a baj.) Aki vállalná ezt az plz küldjön 1 privit, vagy a zsampe@gmail.com ra küldjön 1 üzit.
Előre is köszi.
-
alapz@j
tag
Sziasztok! Van egy 20 000 háromszögből álló scene-em egyszerű bevilágítással, textúrázás nélkül. Először javában lett megírva a mozgatása, majd C-ben, mert azt hittem, hogy a java opengl bridge-je miatt lassú, de C-ben sem gyorsabb. A GL_VENDOR és a GL_RENDERER alapján azt mondanám, hogy működik a hardveres gyorsítás - 20k poligon ennyire megterhelne egy T&L-es VGA eszközt?
-
sss
őstag
Hmm látom nem túl aktív a topik, de hátha.
Van egy üreges/lyukacsos szerkezetű test. Ennek szeretnék a felszínére felvinni egy réteget.
Nem tudom érthető-e, tehát vmi ilyesmit szeretnék kapni.
Erre létezik vmi egyszerű módszer? Isosurfaces, metaballs, marching cubes kb ezekről olvasgattam tegnap éjszaka, de nem lettem sokkal okosabb. -
-
Steve-S
tag
Üdv mindenkinek!
Hogyan lehet azt megcsinálni egy opengl programban hogy ha megnyomom az F1-et előjöjjön egy help, amiben le van írva hogy melyik billentyű mit csinál. Akár egy képen vagy csak szövegesen, mindegy.
Egy forgó fogaskerekeket ábrázoló progihoz lenne, csak kell csinálnom bele egy ilyet pluszba. Ha valaki tudna segíteni vagy netán példakódot rá azt megköszönném! -
Vico87
tag
Szia!
Arra vigyázni kell, hogy az ablaknak az origója a bal felső sarokban van, míg az OpenGL a bal alsó sarkot használja origónak (ablakMagasság - egérY képlettel átalakíthatod). A gluUnProjectnek mindenképp meg kell adni Z-t, ugyanis az befolyásolja a végeredmény X és Y koordinátáit is. -
mlacimk
csendes tag
Először is kösz a választ!
Azóta már én is eljutottam a glReadPixels-es módszerig, de sajnos ezzel is van egy kis gondom. Méghozzá az, hogy nem minden alkalommal olvassa ki jól a mélységet, vagyis kb. minden 4-5. alkalommal csupa 0-t ad vissza ugyanarra a pozícióra...
A glTranslate-ben pedig azért 0-t adok z-nek, mert a z=0 síkon mozgatok.
Majd próbálkozom, de ha lenne valami ötleted, azt is szívesen fogadom
Üdv:
Laci -
mlacimk
csendes tag
Sziasztok!
Egy olyan problémám lenne, hogy egy "léghoki" játékot írok opengl-ben és az ütő kirajzolásához a koordinátákat az egér helyzetéből veszem gluUnProject-el, azonban nem a jó koordinátákat kapom. A játékban az asztal körül a szobában is lehet "sétálni", amire gluLookAt-et használok. Séta módban az irányítás egérrel és billentyűzettel történik, játék módban pedig, az aktuális helyről, ahová sétáltam a szobában, onnan kell az egérrel mozgatni az asztalon az ütűt.
Íme a kód kicsit leegyszerűsítve://Itt kezdődik a display...
gl.glClearColor(0.0f, 0.0f, 0.0f, 1);
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
glu.gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, 0.0f, 0.0f, 1.0f);
szobaKirajzol(gl); //Szoba kirajzolás
asztalKirajzol(gl); //Asztal kirajzolása
if(mod == 1) { //a séta/játék mód eldöntése...
gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);
gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
realy = viewport[3] - (int) y_eger - 1;
glu.gluUnProject((double) x_eger, (double) realy, 0.0f,
mvmatrix, 0,
projmatrix, 0,
viewport, 0,
wcoord, 0);
x_koord = (float)(wcoord[0]);
y_koord = (float)(wcoord[1]);
gl.glPushMatrix();
gl.glTranslatef(x_koord, y_koord, 0); //ütő a megkapott pozícióba rajzolása
utoKirajzol(gl);
gl.glPopMatrix();
}
gl.glFlush(); //vége...A kérdésem az, hogy mit rontottam el, hogy nem a jó koordinátákat kapom, illetve, hogy, ha men ezzel a módszerrel kell megcsinálni, akkor hogyan?
Előre is kösz a válaszokat!
Üdv:
Laci -
Vico87
tag
válasz
norbiphu #169 üzenetére
Hello!
Természetesen tudsz hozzá shadereket írni, függetlenül attól, hogyan adod meg a modellt a pipeline-nak.
A vertex buffert meg próbáld ki, ha gyorsabb, akkor nyertél a dolgon. Az előnye a vertex buffernek, hogy rugalmasabb, mint egy display list (lehet módosítani, amit display listtel nem lehet). Persze ha erre nincs szükséged, akkor mindegy.@Zorro1985 : a görbét ugyanúgy adod meg, mint bármelyik más Bezier-t. A görbe mentén animálni úgy tudsz, hogy a görbe futó paraméterét folyamatosan növeled az idő függvényében, a pillanatnyi érték alapján kiszámolod a görbe adott pontját, majd glTranslate-tel odarakod a kockádat.
szerk. : ha azt is szeretnéd, hogy a görbén mindig a haladási irányba nézzen a kocka, akkor deriválnod kell a görbét a paraméter függvényében, és a kapott irányba kell állítanod a kockát glRotate-tel.
-
norbiphu
őstag
üdv
van egy programom ami betölt egy modellt, majd ezt display listben tárolja.
a kérdésem ezzel kapcsolatban az lenne, hogy annak ellenére hogy display listben van, ugyanúgy tudok hozzá vertex/fragment shadert írni (phong árnyaláshoz pl) ugye?
a másik pedig az lenne, hogy ha vertex bufferbe raknám a modellt az jobb lenne nekem bármiben? (mondjuk így display listtel sincs gond a sebességgel).
előre is köszi.
-
Zorro1985
csendes tag
Sziasztok!
OpenGl-ben hogy tudom megtenni azt, hogy létrehozok egy felszínt, és azon egy tárgyat mozgatok egy görbe mentén?
A felszínt sikerült létrehoznom, a tárgy is megvan, ami most az egyszerűség kedvéért legyen egy kocka. Ezt a kockát szeretném a felszínen egy görbe mentén mozgatni. A Görbét én adom meg, és Bezier görbe. Tereptárgy nincs. Az irányítás a kurzorgombokkal történjen (pl. előre, hátra).
Valaki tudna segíteni, hgy hogy adjam meg a görbét, és, hogy tudom a görbe mentén mozgatni a kocka pl középpntját?
Köszi előre is!
Üdv, Zorro
-
Sanyix
őstag
Az hogy lehetséges hogy az radeon hd3850-es gpumra októberi driverrel minden program azt írja, hogy opengl 2.1-nek felel meg, holott ott vannak a hírek hogy az augusztusi drivercsomagban van már 3.1-es,
-
takacsmiklos
csendes tag
Sziasztok!
Van egy feladatom, OPENGL-be kell leprogramozni egy akváriumot, amibe halak úszkálnak, meg fény megy az akváriumba és a vízbe érve a fény megtörik. Valaki esetleg nem tud valamilyen elindulást, vagy példát, vagy valamilyen oldalt, ahol hasonló a probléma?
Előre is köszi! -
Vico87
tag
Szia!
A megoldás nem túl bonyolult. Az elv, hogy a forgó objektumot először az origó körüli körívre transzformálod, majd hozzáadod a szülőobjektum (amelyik körül forog) transzformációját.
OpenGL-ben ez így néz ki :
// szülő transzformáció
// szülő kirajzolás
glPushMatrix();
// körívre transzformáció
// forgó objektum kirajzolás
glPopMatrix(); -
printf
csendes tag
Sziasztok!
Lehet lámaságnak tunik de nekem egy olyan kérdésem lenne hogy adott objektum (modell) korul egy másikat hogyan lehet forgatni.
Valoszinuleg már nem állok messze a megoldástol és valami gyerek gondja lehet a kodnak de nem megy az istenért sem.
Elore is koszi
-
gaben
aktív tag
Visual Studio 2008-at használom,bekonfigoltam, a sima glut-os példák működnek,de amiben a header gl\glut.h van ,azok nem.Ezt írja:
fatal error C1083: Cannot open include file: 'gl\glaux.h': No such file or directoryMi lehet a gond?én a glut mappájába már bemásoltma a glaux.h-t meg a dll-t is ,de a hiba maradt.
Hogy kell ezt megcsinálni? -
Vico87
tag
válasz
concret_hp #160 üzenetére
Attól függ, hogy mi számít egyszerűnek.
Részecskerendszerrel szokás ilyeneket csinálni, azaz részben átlátszó textúrázott quadból rajzolj sokat relatíve közel, és valamilyen randommal támogatott mozgást adj nekik (mindegyiknek picit mást). Sok múlik a rajtuk lévő textúrán. Az "éles" játékokban is így csinálják, csak nekik vannak művész szakembereik, akik megcsinálják olyanra a textúrákat (nomeg a mozgást), hogy jól nézzen ki. A quadok pedig a kamera felé néznek, de ha kellően sok van belőlük, akkor kihagyhatod a kamera felé nézést.
Ha egységes, homogén ködöt szeretnél, akkor az pedig pixel shaderből megoldható. A dolog nyitja, hogy a távolság függvényében "fehéredik" a látott tárgy, azaz kevésbé látszik a tárgy színe, és egyre jobban köd-színű. Ezt vagy hozzáírod a tárgyak shaderéhez, vagy poszt-processzben csinálod ilyenné a textúrába rajzolt színteret.
-
concret_hp
addikt
füst vagy tűz vagy ilyesmi cuccot lehet vlaahogyan csinálni egyszerűen?
-
Vico87
tag
válasz
concret_hp #158 üzenetére
Nekem most hirtelen a NeHe tutorialok jutottak eszembe : [link]
Egyébként a sünisben az alap OpenGL 1.0/1.1 szerintem jól le van írva (és annál több nem kell a tárgyhoz).
-
concret_hp
addikt
open gl programozáshoz valami használható anyagot tud valaki? legfrankóbb magyarul lenne, az utóbbi hsz-ekben emlegetett bme-s grafikához kellene. Szirmay féle (sünis) könyv megvan, de az inkább az elméletet írja le.
-
Vico87
tag
válasz
#91574272 #155 üzenetére
BME-n a "Számítógépes grafika és képfeldolgozás" című tárgy kötelező alapképzésen, 2D és 3D grafika elmélet hangzik el, algoritmusokkal (mint pl vágás algoritmusai, textúra lookup algoritmusa, stb...), OpenGL-lel, sugárkövetés elmélete, globális illumináció elmélete, minden témakörhöz pszeudokód is van a diákon. Jelenleg úgy van, hogy 4 kisházi van (mint pl tesszeláló program írása, sugárkövető írása, egyszerű játék írása, stb... ), amelyekből aláíráshoz 2 kell.
3ds max tárgy is van, de az szabadon választható, ott lényegében a fontosabb és gyakrabban használt funkciókon mennek át, egész jó tudást lehet szerezni, alapnak tökéletes, de gyakorlat teszi a mestert, mint tudjuk.
Úgy tudom, hogy ELTE-n is van grafika, meg talán Debrecenen, illetve Miskolcon.ui : ha megnézed a "3d grafika elmélet" témában a hsz-eimet, ott van egy kép a sugárkövetőm eredményéről.
-
#91574272
törölt tag
Érdekelne engem, hogy a számítógépes grafika írását tanítják-e valahol, egyetemi szinten, ha igen hol milyen szakon, illetve ugyanez lenne a kérdés a 3d-s modellezéssel kapcsolatban is (pl 3dsmax).
Választ előre is köszi.
-
xforce
csendes tag
Aki vállalná egy egyszerű OpenGL 3D-s játék (arkanoid-féle) elkészítését, írjon ide: adrian1216@freemail.hu
Beadandó feladatnak kellene, árban megegyeznénk.
-
gaben
aktív tag
Az az a baj,hogy nem engedi elindítani.Lefordításkor dobja afent említett Warning-ot,pedig "ez csak egy Warning," sztem ettől menni kellene.
Futtatáskor meg azt írja,hogy nincs lefordítva.
Ha a futtatás és fordítás opcióra megyek,akkor is azt írja,hogy nincs lefordítva a forrás fájl... -
gaben
aktív tag
A fordító beállításainál a a "következő kapcsoló használata a fordító parancssorához" opcióhoz beírtam,hogy glut,így a linker errorok eltüntek...
Viszont most is panaszkodik a main-re:
In function `main':
28 [Warning] return type of 'main' is not `int'De ettől működnie kellene szerintem...
Így néz ki a forráskód:
#include <gl\glut.h>
void main(int, char**);
void reshape(int, int);
void display(void);void reshape(int w, int h)
{
glViewport(0., 0., w, h);
glutPostRedisplay();
}void display()
{glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);glColor3f(1,1,1);
glutWireCube(40);
glFlush();
}void main(int argv, char **argc){
glutInit(&argv,argc);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(500 ,500);glutCreateWindow("Példa");
glLoadIdentity();
gluLookAt(50, 50, 50, 0, 0, 0, 0, 0, 1);glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-100, 100, -100, 100, -200, 200);
glMatrixMode(GL_MODELVIEW);glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMainLoop();}
-
gaben
aktív tag
Sziasztok!
Most próbálkozok először az opengl-el de már za elején elakadtam...
Van néhány példa programom c/c++ forrásban,de a dev-C++ nem hajlandó lefordítani.Vista alatt vagyok,a Windows/System32 mappába már betettem a glut32.dll fájlt illetve a DEV-C++ package managerében is bennne van a glut és glui csomag.A lib mappába is bemásoltam a glut32.lib fájlt és az include mappába a glut.h -t.
Ennek ellenére fordításkor egy csomó hibát dob:
[Linker error] undefined reference to `glutInit'
[Linker error] undefined reference to `glutInitDisplayMode'
........
[Linker error] undefined reference to `glutPostRedisplay'Mi lehet a gond?
-
doc
nagyúr
vannak kesz 3ds (es egyeb) formatumokat beolvaso libraryk, ne talald fel a melegvizet
a blender hal'istennek gyak. barmibe kepes exportalni, ugyhogy ezzel a reszevel sok gondod szerintem nem lesz
a legjobban akkor jarsz ha keresel egy kesz (ingyenes) engine-t (pl. Ogre, Crystalspace, stb), igy egyszeruen es gyorsan elerheted amit akarszpersze ha szeretnel a melyere asni a dolgoknak, akkor hajra
-
Vico87
tag
Hello!
Természetesen lehetséges (a profi játékok is így készülnek, a művészek megcsinálják a modelleket, textúrákat, stb-ket, majd azokat jeleníti meg a játék).
Először választanod kell egy fájlformátumot, amibe a Blender exportálja a modellt, majd a programod ezt beolvassa, ezzel kinyeri belőle a geometriára vonatkozó adatokat, ezt pedig már meg tudod jeleníteni glBegin(...) / glEnd() vagy Vertexbuffer Object segítségével. -
ttower
aktív tag
üdv
blenderben létrehozott 3d-s modelleket meg lehet jeleníteni opengl-el?
van egy házikó és azt kéne megjeleníteni. -
GERI_166
csendes tag
Ami igazán gyors, az egy vertex shaderes VBO alapú renderpath az animált modellek számára. Az a probléma, hogyha nem VBO path-al animálsz, akkor az AGP/PCIE átviteli sebesség ("immediate" módban) nagyságrendekkel lassabb lesz, mint amekkora az interpolálásra elcseszett CPU idő, tehát felesleges ezen farigcsálni.
-
Vico87
tag
Azért gondolom, hogy ez a módszer nem jó, mert lényegében egy csak client area-vel rendelkező ablakot hozok létre, amely pont akkora, mint a desktop. Tegyük fel, hogy felbontást szeretnék állítgatni a progin belül, akkor azt ebben az esetben csak úgy lehetne megoldani, hogy az egész windows felbontását lecseréltetem. Ennél biztosan van szebb megoldás (mellesleg csak ezt találtam guglival, MSDN-en pedig kussolnak a dologról, egy fórumon azt mondják erre a módszerre, hogy "fake fullscreen").
-
shev7
veterán
mikor legutobb openglben programoztam nagyon kicsit, akkor arra emlekszem, hogy amikor kijeloltem hogy az opengl mekkora teruleten garazdalkodhat, akkor effektive csak egy teglalapot kaptam. Tehat defaultbol nincs fejlece az ablaknak. Szoval ha telleg max meretu ablakot hozol letre, akkor jo lesz szerintem. BAr tenyleg regen volt
-
Vico87
tag
Bár ez a kérdés nem szorosan OpenGL-hez tartozik, de jobb topic nincs hozzá (van két ilyen témájú is, kevesebb, mint 10 hszszel, amelyek több évesek
). Azt szeretném elérni Win32 API segítségével, hogy létrehozzak egy fullscreen ablakot, amibe majd OpenGL-lel fogok rajzolni. Csak egy gond van : nem tudom hogyan kell csinálni
. Alap Windowsos ablakot tudok csinálni (és át is tudom adni az OpenGL-nek), böngésztem a netet, de a legközelebbi megoldás, amit találtam fullscreenre, több mint gányolás (abban áll, hogy csináljunk egy WS_POPUP stílusú ablakot, amely pont a képernyő méreteivel megegyezik, így lefedi azt).
Tudna valaki ebben segíteni ?
Előre is köszönöm a segítséget. -
Drizzt
nagyúr
Nem lineáris, de azért gyors keyframe interpolációra van valakinek valami használható kódja? Vagy path animra?
-
Sziasztok!
Sajna, nem találtam jobb témát a kérdésemnek, de szerintem itt kapok választ.
Nos, érdekelne akár leírva, akár belinkelve valami olyan dokumentáció, ami leírja nekem az OpenGL (legújabb változata), és a Directx10 közti különbségeket (ha van értelme így fogalmazni).
Arra vagyok kiváncsi, hogy az DX10-ben újdonságnak számító dolgok hogy működnek OpenGL-ben, ha egyáltalán használhatóak.
Szóval egy olyan doksi kellene, ami úgy általában fényt gyújt az agyam pokoli sötétségében e témában.
Az sem baj, ha az írás elmagyarázza a graf. hardverek működését, és minden ehhez kapcsolódó alap dolgot; pl. mai játékok felépítése grafikai, és programozási szemszögből, stb...
(C, C++ alaptudás megvan, úgyhogy ha erre alapoz a cikk, akkor az nem baj.)Kösszi!
-
Mr_Oizo
csendes tag
Sziasztok!
Olyan kérdésem lenne, hogy hogyan lehet a legújabb opengl fájlokhoz hozzájutni, mert én csak az 1.1-est találtam meg neten ami letölthető, de semmi újabbat
.
-
Vico87
tag
Hello!
Ha azon a procin, ami a profilodban akkor valamelyik metszéspont-számító függvényed lassú. Nekem nincs 10mp kiszámoltatni 1diffúz, 1Phong-Blinn, 1Phong-Blinn+tükröző síkok + a tükröző, törő, spekuláris gömb jelenetet, 5-ös rekurziós mélységgel egy Athlon XP 1600+ procin.
Ellenben még vannak gyermekbetegségei a dolognak, amelyeket ki kell javítanom hétfőig. -
Mr_Oizo
csendes tag
válasz
sghc_toma #131 üzenetére
Így van felépítve a talaj:
glBegin (GL_QUADS);
glNormal3f (0,0,1);
glTexCoord2f (0.0f,1.0f);
glVertex3f (0.0f,0.0f,offset);
glTexCoord2f (1.0f,1.0f);
glVertex3f (width,0.0f,offset);
glTexCoord2f (1.0f,0.0f);
glVertex3f (width,height,offset);
glTexCoord2f (0.0f,0.0f);
glVertex3f (0.0f,height,offset);
glEnd();De, ha glShadeModel (GL_SMOOTH); -ra be van állítva, akkor nem úgy van hogy pixelenként képezi le a fényt, és elvileg jónak kellene lennie?
Most így néz ki egyébként, hátul látszódik a spotlight eredménye:
Megpróbálom rácsra felosztani.
-
Mr_Oizo
csendes tag
válasz
sghc_toma #129 üzenetére
display list, vertex array, vertex buffer object - ezekről már hallottam, de akkor pontosan megnézem, hogy kell alkalmazni.
A spotlightokat az utcai lámpáknak szeretném, azért kellene spot-tal megoldani.
Olyan mintha túl nagy szögben világítaná meg, tehát nem fókuszál kis területre erősen a spotlight, úgy mint a linken amit lentebb beszúrtam. Pedig ennyire állítottam:
Ja és a négyzet GL_SMOOTH-ra van állítva
glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 10);
A direction pedig ekkor jó:
float direction[] = {10.0f, 10.0f, 0.0f};
//spot direction
glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, direction);Igazából valami ilyesmit szeretnék, de nem akarok összejönni:
Nem tudom hogyan lehetne a spotlighot jól beállítani, egy textúrázott négyzethez, ami a z-tengelyen 0-ban van, x, y-on pedig kb. (0,0), (19,19) között kifeszítve.
Meg a spotlight-ot ha megtanultam használni, akkor a kocsik fényszóróját is tudnám vele imitálni, ami jól nézne ki.
-
sghc_toma
senior tag
Köszi mégegyszer
!
nincs mit, szívesen segítek..optimalizációs kérdés:
display list, vertex array, vertex buffer object.. ezek közül valamelyikkel érdemes próbálkozni..spotlight:
az, hogy furán világítja meg a földet, mit takar?és még egy kérdés: a spotlight-od a Nap akar lenni?
ha igen, akkor ne spotlight legyen.. itt a Földön a Nap sugarai tekinthetők párhuzamosnak, így a directional light sokkal alkalmasabb erre a feladatra.. spotlight az inkább egy izzólámpa, vagy hasonló cucc.. tehát a position legyen {0.0f, 0.0f, -1.0f, 0.0f}, és a SPOT-os részeket hagyd el.. -
Mr_Oizo
csendes tag
válasz
sghc_toma #127 üzenetére
Hm......
.
Mindjárt kipróbálom.
Köszi a segítséget!
Áááh! Ez nagyon király cucc
. Tudtam, hogy van ilyen material-os dolog, de nem tudtam hogy ezt ilyen egyszerű megadni vele
Köszi mégegyszer
!
Lenne még két kérdésem
. Nem akarok pofátlan lenni, de ha már itt a fórum, akkor kihasználom
.
.3ds fájlokat töltök be a progiba, és erre van egy függvényem, amivel felépíti ezeket a betöltött object-eket GL_TRIANGLES-ből. Hogyan lehetne ezt optimalizálni, mert beolvasok kb. 100 kisebb objektumot, azokat mozgatom(kocsik egyébként
), és mikor kb. már 100-an vannak bent, akkor lemegy az fps ilyen 10-re
. A .3ds betöltőt a www.spacesimulator.net-ről töltöttem. Nem értem mitől lassul be ennyire, pedig elég jó kis gépem van, szóval nem itt lenne a gond sztem. Esetleg rakjak be forráskódot?
Második kérdés:
Próbálok spotlight-okat berakni a környezetbe, de nem igazán boldogulok vele. Nem azt csinálja, mint ahogy leírják.
Van egy textúrázott négyzetem, ez a föld, ezen mennek a kocsik össze-vissza. Úgy, hogy a földnél most az z tengely van a felfele. Ide beraktam szépen spotlightot, de a direction-t elég érdekesen kell megadnom hogy megvilágítsa a földet. Elvileg úgy kellene megadnom a direction-t hogy (0.f, 0.f, -1.f), és ekkor világit merőlegesen rá a földre. De nem ezt csinálja. Hanem ahogy most megvan adva a direction, így világítja meg a földet, de ilyen furán. Itt a kód:
//Spotlight
float noAmbient[] = {0.2f, 0.2f, 0.2f, 1.0f}; //low ambient light
float diffuse[] = {0.2f, 0.2f, 0.2f, 1.0f};
float position[] = {17.0f, 17.0f, 0.2f, 1.0f};
GLfloat specularLight[]={0.2,0.2,0.2,1.0}; // set specular light parameters
glLightfv(GL_LIGHT2,GL_SPECULAR,specularLight);
//GLfloat specularReflection[]={1.0,1.0,1.0,1.0}; // set specularity
//glMaterialfv(GL_FRONT, GL_SPECULAR, specularReflection);
//glMateriali(GL_FRONT,GL_SHININESS,128);
glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
//properties of the light
glLightfv(GL_LIGHT2, GL_AMBIENT, noAmbient);
glLightfv(GL_LIGHT2, GL_DIFFUSE, diffuse);
glLightfv(GL_LIGHT2, GL_POSITION, position);
//Spot properties
// define the spot direction and cut-off
float direction[] = {10.0f, 10.0f, -1.0f};
//spot direction
glLightfv(GL_LIGHT2, GL_SPOT_DIRECTION, direction);
//angle of the cone light emitted by the spot : value between 0 to 180
glLightf(GL_LIGHT2, GL_SPOT_CUTOFF, 3);
//exponent propertie defines the concentration of the light
glLightf(GL_LIGHT2, GL_SPOT_EXPONENT, 7.0f);
//light attenuation (default values used here : no attenuation with the distance)
glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0f);
glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.0f);
glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.0f);Köszönöm előre is a helpet!
-
Mr_Oizo
csendes tag
válasz
sghc_toma #125 üzenetére
Ez így elég egyszerű megoldás lenne
, csak elfelejtettem írni hogy textúrázottak a gömbök.
Egyébként most azt találtam ki, hogy rakok be fényeket, és míg a négyzetet rajzolom ki, addig glDisable(GL_LIGHTING), aztán pedig glEnable(GL_LIGHTING), és így a négyzet szép világos, a többire pedig hat a fény.
-
sghc_toma
senior tag
-
Mr_Oizo
csendes tag
Sziasztok!
Olyan kérdésem lenne megvilágítással kapcsolatban, hogy hogyan tudom azt megcsinálni opengl-ben, hogy van egy négyzetem például, körülötte meg gömbök, és a négyzet világos legyen, úgy hogy van egy fényforrásom(pl.: directional light) ami megvilágítja a gömböket és a négyzetet, de a négyzet sokkal világosabb legyen, mint amennyit ez a fényforrás ad, és az hogy a négyzet olyan világos, az ne hasson a gömbök megvilágítására.
Olvastam valami gl_emission-ról, kipróbáltam de nem igazán azt csinálja amit szeretnék.
Köszönöm előre is a segítségeket!
-
Drizzt
nagyúr
Már minden megvan elvileg, amit meg kellett csinálnom, de a törési irányt hiába számítom ki, s küldök rajta sugarakat, az a gond, hogy mindig visszaverődés lesz az eredménye. Valami ötlet?
-
Drizzt
nagyúr
Ahogy állok eddig a raytraceremmel, ki van rajzoltatva 3 sík, 2 diffúz, +1 Phong-Blinn modell alapján árnyalva. Van elvileg már árnyékszámítás, ideális törő, s visszaverő irányokból a fények útjainak továbbszámítása, 3-as rekurziós mélységig. A számításokat teljes egészében cpu végzi, így kb. 30 mp a kép a procimmal. Ez reális? 600*600 pixelről van szó.
-
Drizzt
nagyúr
Szóval kell most írnom raytracert, egy kérdésem van:
Ezt a függvényt kell használnuk, az érdekelne, hogy 600*600 pixelnyi color információnak elegendő tömböt le lehet foglalni c++-ban? Vagy hogy tudnám másképp ezzel a függvénnyel kirajzoltatni a cpu által számolt pixeleket? -
tothg77
csendes tag
Sziasztok!
Perlin zajnak a megvalósításával próbálkozok GLSL-ben. 1D textúrában van a colormap de nem akar működni a program így, csak fekete képernyőt kapok. Ha az utolsó sort kicserélem
gl_FragColor=vec4(c,c,c,0);-re akkor kirajzolja szürke árnyalatosan szóval nem a zajszámításban van a hiba.
Semmi hibát nem jelez a fordító.
Mért nem működik így a texture1D címzése? Aki tudja ne tartsa vissza.uniform sampler1D colormap;
uniform sampler2D grads;
#define ONE 1.0/256.0
float fade(float t) {
return t*t*t*(t*(t*6.0-15.0)+10.0);
}
float noise(vec2 xy) {
vec2 xyfrac=fract(xy);
float xfrac=xyfrac.x;
float yfrac=xyfrac.y;
float x=xy.x/ONE;
float y=xy.y/ONE;
float u=fade(xfrac);
float v=fade(yfrac);
vec2 gx1y1=texture2D(grads,vec2(x,y)).xy;
vec2 gx2y1=texture2D(grads,vec2(x+ONE,y)).xy;
vec2 gx2y2=texture2D(grads,vec2(x+ONE,y+ONE)).xy;
vec2 gx1y2=texture2D(grads,vec2(x,y+ONE)).xy;
float x1y1=dot(gx1y1,xyfrac);
float x2y1=dot(gx2y1,vec2(xfrac-1.0,yfrac));
float x2y2=dot(gx2y2,vec2(xfrac-1.0,yfrac-1.0));
float x1y2=dot(gx1y2,vec2(xfrac,yfrac-1.0));
float n1=mix(x1y1,x2y1,u);
float n2=mix(x1y2,x2y2,u);
return mix(n1,n2,v);
}
float fbm(vec2 xy,int octaves) {
float c=0.0;float s=1.0;
for (int i=0;i<octaves;i++) {
c+=noise(xy*s)/s;
s*=2.0;
}
return c;
}
void main() {
float c=(1.0+fbm(gl_TexCoord[0].xy*4.0,6))*0.5;
gl_FragColor=texture1D(colormap,c);
} -
-
ALI_G
veterán
ray tracert írjon akinek két anyja van
van egy könyv, talán az egyetlen magyar nyelvű, abban vannak pszeudókódok.
nekem vizsgára kellett csak ray trace, de ott is csak az elmélete meg a képletek. (az is elég volt)
a könyv: Szirmai-Kalos L., Amtal Gy., Csonka F.: Háromdimenziós grafika, animáció és játékfejlesztés, Computerbooks, 2004. Azóta asszem nem adtak ki újat. A mi egyetemi könyvtárunkban 3 példány volt mindössze, 300 hallgatóra. -
Drizzt
nagyúr
Bme, de csak az egyik kötelező tárgy, a másikat azért vettem fel, hogy az elméletet még többször, még több szempontból hallgassam, mert a kötelező tárgyból sikerült megbukni előző félévben. A 40 perc alatt írj ray-tracert az aláírásért nem feküdt nekem(persze papíron, c++ nyelven).
A kötelező neve: szgépes grafika, emélet és ogl van benne főleg, másik meg grafikus játékok fejlesztése, ott elmélet és d3d a főétel.
-
Drizzt
nagyúr
Megvolt az első opengl kisházim, aztán van két hét a következőre. Raytracer-t kell írni. Ezzel kapcsolatban annyi kérdésem lenne, hogy opengl-t a pixelek megjelenítésén kívül mire használhatnám fel? Gondolom semmire, mindent cpuval kell számoltatnom majd, s csak a képet átadni a gl-nek.
Más: opengl-hez van valami olyan típus, mint D3d-ben a D3DXVECTOR3?
Izgi, hogy most egyszerre tanulok párhuzamosan OpenGL-t, meg D3D-t is. -
Vico87
tag
Köszi szépen, ez megoldotta.
Amirõl fentebb beszéltem, hogy amikor DirectX SDK-t raksz fel, akkor csak meg kell adni a lib és h fájlok mappáit a Tools / Options / Projects and Solutions / VC++ Directories-ban. Ez alapján arra gondoltam hogy hasonlóan kell eljárni OpenGL esetén is, azonban annak a h és lib fájlai már bent vannak a megfelelõ helyen.
-
Vico87
tag
A libek már elvileg automatikusan bekerülnek a VC++ beállítások közé telepítéskor, de ellenõriztem, és bent vannak. Ennek ellenére nem tud linkelni.
Ha ez segít, akkor elmondom, hogy a WM_CREATE üzenetnél állítom be a wiggle függvényekkel az OpenGL-nek a Device Context-et, a WM_DESTROY-nál delete-elem szintén wiggle hívásokkal. Jelenleg még nem raktam semmilyen rajzolási kódot, de attól még mennie kéne, hiszen inicializálom és kilépéskor meg eltűntetem.
Szerk.: jut eszembe, lib és h fájlok a helyükön, ellenõriztem, GLUT nincs fent, de nincs is GLUT hívás, csak OpenGL és wiggle.
-
Vico87
tag
Hello!
Most ismerkedem az OpenGL programozással, és támadt egy kis váratlan gondom (egy szimpla HelloOpenGL program megírásakor). Nevezetesen az, hogy a wgl kezdetű függvényekre a linker egy "unresolved external symbol" hibát ad, pedig szépen include-oltam a gl.h és glu.h fejléceket. Egyébként MS VC++ 2005-ben csinálom, és furcsa módon van ezekhez a függvényekhez IntelliSense támogatás.
Van valakinek valami ötlete, hogy miért fordul ez elõ?Elõre is köszönöm a segítséget.
-
ktms
csendes tag
Üdv.
Egy részecskerendszert szeretnék leprogramozni, de van egy kis gondom.
A részecskéket egy quad-ra rajzolom és mindig a kamera felé néznek, ezt úgy írtam meg hogy lekérdezem a model view mátrixot, és transzponálom, beállítom a pozíciót és visszaszorzok a mátrixal, ez jól működik. Most azt szeretném megoldani hogy a részecskék forogjanak, de úgy hogy közben a kamera felé nézzenek.Próbálkoztam azzal hogy a z tengely körüli forgatást kiszámolom a transzponált mátrixban, de ennek az lett a vége hogy forog a quad, csak éppen nem marad merőleges a kamerára.
Valahogy így:
viewmatx[0][0] = cos(p->age / 1000.0);
viewmatx[0][1] = -sin(p->age / 1000.0);
viewmatx[1][0] = sin(p->age / 1000.0);
viewmatx[1][1] = cos(p->age / 1000.0);Valakinek van ötlete?
-
ALI_G
veterán
Nem tudom mit hagytam ki a textúrázáshoz. bmp-t akarok felhúzni, de semmit se csinál.
Ezeken kívül mi kell még hozzá?
#include "bitmap.h"
GLuint texture1;renderscene {
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture1);
glBegin(GL_QUADS);
glColor3f(1.0f, 1.0f, 1.0f);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0, 0.0); glVertex3f(-100.0f, -5.0f, 100.0f);
glTexCoord2f(0.0, 1.0); glVertex3f(-100.0f, -5.0f, -100.0f);
glTexCoord2f(1.0, 1.0); glVertex3f(100.0f, -5.0f, -100.0f);
glTexCoord2f(1.0, 0.0); glVertex3f(100.0f, -5.0f, 100.0f);
glEnd();
}és még a main végén ez szerepel:
texture1 = TextureLoad("floor.bmp", GL_FALSE, GL_LINEAR, GL_LINEAR, GL_REPEAT);
A Makefile-ba is bele van írva a bitmap.h és bitmap.o és a mappában vannak. -
almi
senior tag
Na tehát itt a SetupRC-m:
void SetupRC()
{
glEnable(GL_DEPTH_TEST); // Hidden surface removal
glFrontFace(GL_CCW); // Counter clock-wise polygons face out
glEnable(GL_CULL_FACE); // Do not calculate inside of jet// Light blue background
glClearColor(1.0f, 1.0f, 1.0f, 1.0f );glEnable(GL_LIGHTING);
//glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);// Setup and enable light 0
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight2);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular2);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos2);
glEnable(GL_LIGHT0);// Enable Material color tracking
glEnable(GL_COLOR_MATERIAL);
// Front material ambient and diffuse colors track glColor
glColorMaterial(GL_FRONT, GL_AMBIENT);// All materials hereafter have full specular reflectivity
// with a high shine
glMaterialfv(GL_FRONT, GL_SPECULAR, specref);
glMaterialfv(GL_FRONT, GL_SPECULAR, specref2);
glMateriali(GL_FRONT, GL_SHININESS,128);
}És ha így csinálom, nem lesz 2 világításom, csak mindíg a 2.
Ezt hogy kell átírni h jó legyen szerinted?
Köszi..
Új hozzászólás Aktív témák
Hirdetés
- Több mint 1 milliárd dollárnyi részvényüket adták el az NVIDIA belsős emberei
- Nintendo Switch 2
- Medence topik
- PR-Telecom
- Melyik tápegységet vegyem?
- A fociról könnyedén, egy baráti társaságban
- Könyvajánló
- Milyen autót vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Donald Trump azt mondja, hogy megtalálta a TikTok vevőjét
- További aktív témák...
- Eladó MSI B650 GAMING PLUS WIFI Alaplap
- Eladó PNY GeForce RTX 4070 Ti SUPER 16GB videokártya
- Bomba ár! Asus Slate EP121 Tablet - Intel Core i5 I 4GB I 64GB SSD I 12" Touch I Cam I W10 I Gari!
- Bomba ár! HP EliteBook 2570P - i5-3GEN I 4GB I 320GB I DVD I 12,5" HD I W10 I Garancia!
- Bomba ár! HP EliteBook 2560P - i5-2GEN I 4GB I 320GB I 12,5" HD I W10 I Garancia!
- Corsair Katar Elite WL egér eladó (hibás)
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- Telefon felvásárlás!! iPhone 14/iPhone 14 Plus/iPhone 14 Pro/iPhone 14 Pro Max
- Apple iPhone 14 Pro 128GB, Kártyafüggetlen,
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest