Aktuelle Zeit: 13.05.2024, 12:20

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Grafik- und Design-Probleme
BeitragVerfasst: 06.05.2007, 12:54 
Offline

Registriert: 06.05.2007, 12:36
Beiträge: 1
Hallo,
ich bin gerade dabei, mich in Irrlicht einzuarbeiten, da es jetzt auch auf der PSP läuft. Ich will ein einfaches Title-basiertes Level basteln. Nun habe ich folgende Probleme:
1. Ich kann keine erkennbare Textur auf die einzelnen Felder legen.
Habe schon versucht, die Textur zu skalieren aber das half nichts. (Edit: Gelöst, bin ja auch doof, habe vergessen die tu und tv Werte zu ändern)
2. Wenn ich DX9 oder 8 verwende werden ganz andere Koordinaten für die Polygone verwendet. Sie liegen quer über die ganze Fläche. Bei OpenGL und Software liegen sie richtig.

Evntl. gehe ich ja ganz falsch an die Sache ran.

Code:
class CSampleSceneNode : public scene::ISceneNode
{

   core::aabbox3d<f32> Box;
   video::S3DVertex Vertices[MAP_WIDTH*MAP_HEIGHT];
   video::SMaterial Material;
   
public:

   CSampleSceneNode(scene::ISceneNode* parent, scene::ISceneManager* mgr, s32 id)
      : scene::ISceneNode(parent, mgr, id)
   {
      int x,y,r;
      video::IVideoDriver* driver = SceneManager->getVideoDriver();
      Material.Wireframe = false;
      Material.Lighting = false;
      Material.GouraudShading=false;
      Material.Texture1=driver->getTexture("../../media/boden.bmp");
      
      Material.FogEnable=false;
      video::SColor cubeColour(0,128,128,128);
      video::SColor cubeColour2(255,255,255,255);
      for(y=0;y<MAP_HEIGHT;y++){
         for(x=0;x<MAP_WIDTH;x++){
            r=rand()*4/RAND_MAX;
            if(x>6 && x<9 && y>6 && y<9){
               Vertices[x+y*MAP_WIDTH]=video::S3DVertex(x*10,10,y*10, 1,1,0, cubeColour2, 0, 1);
            }else{
               Vertices[x+y*MAP_WIDTH]=video::S3DVertex(x*10,0,y*10, 0,0,0, video::SColor(128,128,128,128), 0, 1);
            }            
         }
      }

      Box.reset(Vertices[0].Pos);
      for (s32 i=1; i<MAP_HEIGHT*MAP_WIDTH; ++i)
         Box.addInternalPoint(Vertices[i].Pos);

   }

   virtual void OnPreRender()
   {
      if (IsVisible)
         SceneManager->registerNodeForRendering(this);

      ISceneNode::OnPreRender();
   }

   virtual void render()
   {
      int s,nx,ny;
      core::vector3df pos;
      u16 indices[6];
      video::IVideoDriver* driver = SceneManager->getVideoDriver();
      video::S3DVertex *tmp=&Vertices[0];
            
      driver->setTransform(video::ETS_WORLD, AbsoluteTransformation);
      driver->setMaterial(Material);
      

      indices[2]=0;
      indices[1]=1;
      indices[0]=MAP_WIDTH;

      indices[5]=1;
      indices[4]=MAP_WIDTH+1;
      indices[3]=MAP_WIDTH;

      pos=camera->getPosition();
      nx=pos.X/10;
      ny=pos.Z/10;

      for(int y=0;y<MAP_HEIGHT-1;y++){
         for(int x=0;x<MAP_WIDTH-1;x++){            
            if(x>nx-4 && x<nx+7 && y>ny-10 && y<ny+10){
               driver->drawIndexedTriangleList(tmp, 2, &indices[0], 2);
            }
            tmp++;
         }
         tmp++;
      }
   }

   virtual const core::aabbox3d<f32>& getBoundingBox() const
   {
      return Box;
   }

   virtual s32 getMaterialCount()
   {
      return 1;
   }

   virtual video::SMaterial& getMaterial(s32 i)
   {
      return Material;
   }   
};


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de