Bonjour,
J'essaye de texturer une vidéo sur une sphère et je ne sais pas trop pourquoi ça ne marche pas.
Voilà ce que j'ai fait :
testApp.h
ofVideoPlayer test;
GLUquadricObj *quadric;
int x;
int y;
unsigned char * video;
ofTexture videoTexture;
testApp.cpp
setup :
test.loadMovie("kolor.mp4");
test.play();
ofSetBackgroundAuto(false);
ofSetFrameRate(30);
glEnable(GL_DEPTH_TEST);
ofDisableArbTex(); //needed for textures to work with gluSphere
quadric = gluNewQuadric();
gluQuadricTexture(quadric, GL_TRUE);
gluQuadricNormals(quadric, GLU_SMOOTH);
x=test.getWidth();
y=test.getHeight();
cout<<" long"<< x<< endl;
cout<<" haut"<< y<<endl;
video = new unsigned char[x*y*3];
videoTexture.allocate(x,y, GL_RGB);
update :
test.update();
if (test.isFrameNew()){
int totalPixels = x*y*3;
unsigned char * pixels = test.getPixels();
for (int i = 0; i < totalPixels; i++){
video[i] = pixels[i];
}
videoTexture.loadData( x, y, GL_RGB);
}
draw :
ofTranslate(ofGetWidth()/2, ofGetHeight()/2, 0);
videoTexture.bind();
gluSphere(quadric, 200, 1000, 1000);
videoTexture.unbind();
////////////////////////////////
En gros, ça ne fonctionne pas !
Une idée ?
Hors ligne
salut tu n'est pas loin.
le testapp.h
ofVideoPlayer test; GLUquadricObj *quadric; int x; int y; unsigned char * video; ofTexture videoTexture; ofEasyCam cam;
le testapp.cpp
//-------------------------------------------------------------- void testApp::setup(){ test.loadMovie("kolor.mp4"); test.play(); test.setSpeed(1.); //ofSetBackgroundAuto(false); ofSetFrameRate(30); glEnable(GL_DEPTH_TEST); ofDisableArbTex(); //needed for textures to work with gluSphere quadric = gluNewQuadric(); gluQuadricTexture(quadric, GL_TRUE); gluQuadricNormals(quadric, GLU_SMOOTH); x=test.getWidth(); y=test.getHeight(); cout<<" long"<< x<< endl; cout<<" haut"<< y<<endl; video = new unsigned char[x*y*3]; videoTexture.allocate(x,y, GL_RGB); } //-------------------------------------------------------------- void testApp::update(){ test.update(); } //-------------------------------------------------------------- void testApp::draw(){ ofTranslate(ofGetWidth()/2, ofGetHeight()/2, 0); if (test.isFrameNew()){ int totalPixels = x*y*3; video = test.getPixels(); videoTexture.loadData(video, x, y, GL_RGB); } cam.begin(); videoTexture.bind(); gluSphere(quadric, 200, 1000, 1000); videoTexture.unbind(); cam.end(); }
Hors ligne
Je te remercie nononononono !
Finalement j'avais trouvé mon erreur !
Cela dit ta proposition me parait encore plus "optimiser"
Je vais tester
Hors ligne