Magic Library - True Type windows font

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
zarstar
Posts: 16
Joined: Mon May 22, 2006 12:12 pm

Post by zarstar »

Hi Emil:
I've tried to use your new system for collision, but I can't do it.
Can you explain more how we can use it?

What are the parameters of the function:
if(SpriteCollide->CheckPixelCollide(MsslCollide,Mx,My,
SprtX,100,Sprite->GetCurntFrame()))

What it do? Check the collision between SpriteCollide and MsslCollide? and what is sprite so??

And How can I use it if I have to check a collision between a TAnimImage (with only one frame) and a SMaterial?

Please, explain all that you can for your great work!
:)
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

Hi zarstar

sorry for not clear enough,here is the complete Example

Code: Select all

/************************************
       Magic library

   Collision 2D test will teach
   you how to make it.

      By Emil Halim
*************************************/


#include <irrlicht.h>

#include <Magic2d.hpp>

using namespace irr;


using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

// global declration of Irrlicht interfaces
IrrlichtDevice* device;
IVideoDriver*   driver;
ISceneManager*  smgr;
IGUIEnvironment* guienv;


int main()
{

    device = createDevice(EDT_OPENGL, dimension2d<s32>(640, 480), 32);
    bool rslt = InitMagic(device);
    if(rslt == false)
          printf("Magic Library will only work with OpenGL driver");

	device->setWindowCaption(L"Hello World! - Magic 2d library for Irrlicht");

	driver = device->getVideoDriver();
	smgr = device->getSceneManager();
	guienv = device->getGUIEnvironment();

    SMaterial  F17;
    F17.Texture1 = driver->getTexture("../../media/F117.png");
    driver->makeColorKeyTexture(F17.Texture1,position2d<s32>(0,0));
    SMaterial  Missle;
    Missle.Texture1 = driver->getTexture("../../media/Missle.Bmp");
    driver->makeColorKeyTexture(Missle.Texture1,position2d<s32>(0,0));
    TAnimImage* Explode = new TAnimImage(driver);
    Explode->Load("../../media/Explode.bmp",0,0,1024,64,64,64);
    Explode->setSpeed(50);
    Explode->setRepeatPlay(2);
    TAnimImage* Sprite = new TAnimImage(driver);
    Sprite->Load("../../media/sonwalk.bmp",0,0,40*8,40,40,40);
    Sprite->setSpeed(100);

    // collision stuff
    TMaskCollision* SpriteCollide = new  TMaskCollision;
    SpriteCollide->Create("../../media/sonwalk.bmp",40,40);
    TMaskCollision* MsslCollide = new  TMaskCollision;
    MsslCollide->Create("../../media/Missle.Bmp");

    HideMouse();

    int lastFPS = -1;

	while(device->run())
	{

		driver->beginScene(true, true, SColor(0,0,0,0));


                 ViewOrtho();
                 static f32 SprtX=0,inc=0.1f;
                 if(SprtX>640){inc=-0.1f; Sprite->FlipX(true);}
                 if(SprtX<0){inc= 0.1f; Sprite->FlipX(false);}
                 SprtX+=inc;

                 SetBlend(ALPHABLEND);
                 SetColor(255,255,255);
	             SetAlpha(1.0);

                 static f32 Mx,My,Ey;
                 static bool flg = false,fire = false;
                 static s32 Expl = 0;
                 s32 MsX = MouseX();
                 driver->setMaterial(F17);
                 DrawImage(F17,(f32)MsX,450);
                 if(MouseLeftKeyDown())
                  {
                       My  = 450;
                       Mx  = (f32)MsX;
                       flg = true;
                  }

                 if(flg)
                  {
                      driver->setMaterial(Missle);
                      DrawImage(Missle,Mx,My);
                      My -= 1;
                      if(My < 0) flg = false;
                  }
                 //! check for collision between sprite and Missle
                 if(SpriteCollide->CheckPixelCollide(MsslCollide,Mx,My,SprtX,100,Sprite->GetCurntFrame()))
                  {
                      fire=true;
                      flg=false;
                      Ey  = My;
                      My  = 450;
                  }
                 //! draw explotion if collide take place
                 if(fire)
                  {
                     Explode->Update();
                     Expl=Explode->Draw(Mx,Ey);
                     SprtX=0;
                  }

                 if(Expl==1){fire = false; Explode->ResetRepeatPlay();}

                 if(!fire)
                  {
                     Sprite->Update();
                     Sprite->Draw(SprtX,100);
                  }

                 ViewPerspective();


                 // finally if we have some 3d stuff to draw , we use the next
                 // two lines
                 smgr->drawAll();
		         guienv->drawAll();

		driver->endScene();
		int fps = driver->getFPS();
         if (lastFPS != fps)
         {
            wchar_t tmp[1024];
            swprintf(tmp, 1024, L"Hello World! - Magic 2d library for Irrlicht (%s)(fps:%d)",driver->getName(), fps);
            device->setWindowCaption(tmp);
            lastFPS = fps;
         }
	}

	device->drop();

	return 0;
}

so we want to chech the sollision between the Missle (SMaterial type) against Sprite (TAnimImage* type).

in the above example we created two masks , one for Missle (MsslCollide)and the other for Sprite (SpriteCollide),and those are the object we use when we chech the collision.

here is the prorotype of the function

Code: Select all

bool CheckPixelCollide(TMaskCollision* other,f32 other_x,f32 other_y,f32 x2,f32 y2,s32 frame);
let us apply it for our example,we want to chech if Sprite was collide with
the Missle,so we call CheckPixelCollide of the SpriteCollide just like this

Code: Select all

if(SpriteCollide->CheckPixelCollide(.............))
the first parameter is a pointer to other object that you want to chech the collision with(MsslCollide),the 2nd and 3th parameters are the current coordinates of Other Object Missle Image(Mx,My)(mouse coordinates) ,the 4th and 5th parameters are the current coordinates of Sprite(animated Image)(SprtX,100),the last parameter is the current frame of animated Image and you can get it by call GetCurntFrame Member function of animated Image(Sprite->GetCurntFrame()).

that is all

And How can I use it if I have to check a collision between a TAnimImage (with only one frame) and a SMaterial?
if i get it well ,why you use TAnimImage type for only one frame instead use SMaterial type?

i hope that it is become more clear by now.

thanks
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

Hi Everybody

according to the thread of Irrlicht TechDemo
http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=11267
there was a simple project that written by MikeR , i have decided to make a Splash window for this project , i have chenged it so that it uses Fmod library instead of audiere library.

here are a screenShots of Splas Window

Image
Image
Image
Image

download it from here
http://bcxdx.spoilerspace.com/BCXGL/IrrTechDemo.zip

hope that you like it and add your own contribution code to make a stuning Irrlicht techDemo .

here is the Splash code

Code: Select all

/************************************
           Magic library

     Splash Window For Irrlicht
             TechDemo

           By Emil Halim
*************************************/

#include <CFmod.cpp>

struct chrPostion
 {
     f32 initX,initY,initZ;
     f32 finlX,finlY,finlZ;
     f32 X,Y,Z;

     void Create(f32 ix,f32 iy,f32 iz,f32 fx,f32 fy,f32 fz)
      {
          initX=X=ix;
          initY=Y=iy;
          initZ=Z=iz;
          finlX=fx;
          finlY=fy;
          finlZ=fz;

      }

     void Update(f32 factor)
      {
             if(factor < 0.0f)
              {
                 X=initX;
                 Y=initY;
                 Z=initZ;
                 return;
              }
             if(factor > 1.0f)
              {
                 X=finlX;
                 Y=finlY;
                 Z=finlZ;
                 return;
              }

              X=factor*finlX+(1.0f-factor)*initX;
              Y=factor*finlY+(1.0f-factor)*initY;
              Z=factor*finlZ+(1.0f-factor)*initZ;

      }
 };

ISceneManager* SplashSmgr=0;
SMaterial  FontA;
TMagicCharSceneNode *CharNode[8];
chrPostion           ChrPos[8];
SMaterial Rain;
TTime  *Timer1,*Timer2,*Timer3;
SMaterial logoimage;
SMaterial rastaImage;
TFadeInOut* Fade;
#define StarCount 1000
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define Speed 0.2f
#define NoOfLayers 3
SMaterial dot;
IFmod* Music;

struct STAR
 {
   f32 x,y;
 };
STAR Star[StarCount];

BOOL RenderSplash()
 {
       device->run();
       driver->beginScene(true, true, SColor(0,0,0,0));

    if(Timer1->CheckStartTime())
     {
       static f32 intr=0.0f,rot=0.0f;
       intr+=0.001f;
       rot+=1;
       if(rot>359) rot=0.0f;
       for(s32 i=0; i<8; i++)
        {
            ChrPos[i].Update(intr);
            CharNode[i]->setPosition(vector3df(ChrPos[i].X,ChrPos[i].Y,ChrPos[i].Z));
            CharNode[i]->setRotation(core::vector3df(0,rot,0));
        }
     }

    if(Timer2->CheckStartTime())
     {
        static f32 fade =0.0;
        const f32 Fval = 0.05f*4;
        fade+=0.001f;
        for(s32 i=0; i<8; i++)
           if(fade>Fval*i)
            {
              f32 a = 1.0f-fade+Fval*i;
              CharNode[i]->setAlpha(a>0?a:0);
            }
      }

     if(Timer3->CheckTime())
      {
          ViewOrtho();
          SetBlend(ALPHABLEND);
          SetColor(255,255,255);
          static f32 fd=0.0;
          fd += 0.01f;
          if(fd>1.0)fd=1.0;
          SetAlpha(fd);
          driver->setMaterial(Rain);
          SetScale(1.5,3.0);
          DrawImage(Rain,320,265);
          SetScale(1.0,1.0);
          driver->setMaterial(dot);
          for(int k=0; k<NoOfLayers; k++)
            {
                u32 c = k*70+100;
                SetColor(c,c,c);
                for(int i=0; i<StarCount/NoOfLayers; i+=NoOfLayers)
                 {
                    Star[i+k].x  -=  Speed * (k+1);
                    if(Star[i+k].x<0)Star[i+k].x=SCREEN_WIDTH;
                    DrawImage(dot,Star[i+k].x,Star[i+k].y);
                 }
             }
          SetBlend(LIGHTBLEND);
          SetScale(1.0f,1.7f);
	      SetColor(100,0,255);
	      SetAlpha(fd);
	      driver->setMaterial(rastaImage);
          f32 xstart=0,ycenter=70,scale=28;
	      static f32 angle=0,angleadd=5,freq=1;
          angle+=angleadd;
	      for(f32 i=0;i<640;i++)
	       {
	          f32 temp = i+xstart;
	          if(temp>0 || temp<640)
	          DrawImage(rastaImage, temp, ycenter + sin((i+angle)*freq*3.14159265f/180)*scale);
	          DrawImage(rastaImage, temp, ycenter+300 + sin((i+angle)*freq*3.14159265f/180)*scale);
	       }

          SetColor(255,0,0);
          SetScale(0.5f,1.0f);
          Fade->FadeInOut(500,500,500,true);
          driver->setMaterial(FontA);
          DrawText("CLICK LEFT MOUSE KEY FOR SKIP",100,448);
          ViewPerspective();
      }
     else
      {
          ViewOrtho();
          SetBlend(ALPHABLEND);
          SetColor(255,255,255);
          SetAlpha(1.0);
          static f32 Sy=3.0;
          Sy -= 0.01f;
          if(Sy<0)Sy=0;
          SetScale(1.5,Sy);
          driver->setMaterial(Rain);
          DrawImage(Rain,320,265);
          SetColor(255,0,0);
          SetScale(0.5f,1.0f);
          Fade->FadeInOut(500,500,500,true);
          driver->setMaterial(FontA);
          DrawText("CLICK LEFT MOUSE KEY FOR SKIP",100,448);
          ViewPerspective();
      }


       SplashSmgr->drawAll();

       ViewOrtho();
       SetScale(1.0f,1.0f);
       SetColor(255,10,255);
       glLineWidth(5);
       glPointSize(5);
       driver->setMaterial(dot);
       DrawFrame(0,0,640,480);
       ViewPerspective();

       driver->endScene();


       BOOL falg = true;
       if(KeyDown(32) || MouseLeftKeyDown()) falg = false;
       return falg;
 }

 void InitSplash()
  {

    ICameraSceneNode* SplashCam = SplashSmgr->addCameraSceneNode(0, vector3df(0,0,-200), vector3df(0,0,0));

    FontA.Texture1 = driver->getTexture("../../media/FontAmiga.bmp");
    driver->makeColorKeyTexture(FontA.Texture1,position2d<s32>(0,0));
    GLuint fntA = CreateFont(FontA,32,28,32);
    SetFont(fntA);

    for(s32 i=0; i<8; i++)
     {
        CharNode[i] = new TMagicCharSceneNode(SplashSmgr->getRootSceneNode(),SplashSmgr, i);
        CharNode[i]->setFont(fntA,&FontA);
        CharNode[i]->setBlend(ALPHABLEND);
        CharNode[i]->setColor(255,255,255);
        CharNode[i]->setPosition(vector3df(0.0f,0.0f,-201.0f));
        CharNode[i]->setScale(vector3df(1,1.5f,0));
        ChrPos[i].Create(0,0,-200,-140.0f+i*40,0,0);
     }
    CharNode[0]->setChar('I');
    CharNode[1]->setChar('R');
    CharNode[2]->setChar('R');
    CharNode[3]->setChar('L');
    CharNode[4]->setChar('I');
    CharNode[5]->setChar('C');
    CharNode[6]->setChar('H');
    CharNode[7]->setChar('T');


    Rain.Texture1 = driver->addTexture(dimension2d<s32>(512,100),"");
    TTextureManipulator* txtImage = new TTextureManipulator(Rain.Texture1);
    txtImage->StartDrawing();
    txtImage->Clear();
    u32 clr=0x00;
    for(int h=1;h<50;h++)
     {
         for(int w=0;w<512;w++)
             txtImage->WritePixel(w, h, 0xFF000000|clr);
         clr+=0x5;
     }
    for(int h=50;h<100;h++)
     {
         for(int w=0;w<512;w++)
             txtImage->WritePixel(w, h, 0xFF000000|clr);
         clr-=0x5;
     }
    txtImage->StopDrawing();

    dot.Texture1 = driver->addTexture(dimension2d<s32>(2,2),"");
    s32* map =(s32*)dot.Texture1->lock();
    for(int i=0;i<3;i++)*map++ = 0xFFffffff;
    dot.Texture1->unlock();

    rastaImage.Texture1 = driver->addTexture(dimension2d<s32>(2,64),"");
    txtImage->set(rastaImage.Texture1);
    txtImage->StartDrawing();
    txtImage->Clear();
    clr=0x00;
    for(int h=0;h<32;h+=2)
     {
         for(int w=0;w<1;w++)
          {
             txtImage->WritePixel(w, h  , 0xFF000000|clr);
             txtImage->WritePixel(w, h+1, 0xFF000000|clr);
          }
         clr+=0xf0f0f;
     }
    for(int h=32;h<64;h+=2)
     {
         for(int w=0;w<1;w++)
          {
             txtImage->WritePixel(w, h  , 0xFF000000|clr);
             txtImage->WritePixel(w, h+1, 0xFF000000|clr);
          }
         clr-=0xf0f0f;
     }
    txtImage->StopDrawing();

    randomize(GetTickCount()/1000);
    for(int i=0;i<StarCount;i++)
     {
        reRndX:
           Star[i].x  = rnd()*(SCREEN_WIDTH);
           if(Star[i].x > SCREEN_WIDTH || Star[i].x < 0) goto reRndX;
        reRndY:
           Star[i].y  = rnd()*100+180;
           if(Star[i].y > 180+90 || Star[i].y < 180) goto reRndY;
     }


    Fade = new TFadeInOut();

    FmodInit();

    Music = new TMusic;
    Music->Load("../../media/mod/Efy8100.mp3");
    Music->Play();
    Music->SetVolume(100);

    TimeInit();
    Timer1 = new TTime(2000,0);
    Timer2 = new TTime(8000,0);
    Timer3 = new TTime(0,48000);

  }
here is the Main code

Code: Select all

/*
  This is a Demo project made by the Irrlicht Community, showing off as many of the features
as possible within a tech-demo.
This first part was made by Mike Rowley http://www.3dcentral.net and is just a basic structure for
the community to add to.
For this example, Irrlicht and audiere are in the root (C:|) directory.
*/
#include <irrlicht.h>

#include <Magic2d.hpp>


using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace gui;

#pragma comment(lib, "Irrlicht.lib")

IrrlichtDevice *device = 0;
s32 cnt = 0;

bool closeDevice=false;
video::IVideoDriver* driver;
scene::ISceneManager* smgr=0;

#include "splash.cpp"


/*
  The first thing we have is our event reciever. We need this so that our users can press "esc"
to exit. The event reciever can also be extended to do other operations within our program.
*/

class MyEventReceiver : public IEventReceiver
{
public :
virtual bool OnEvent(SEvent event)
{
if(event.EventType = EET_KEY_INPUT_EVENT)
        {
            switch(event.KeyInput.Key)
            {
               case KEY_ESCAPE:
                    device->closeDevice();
                    break;
            }
            return false;
        }
}
};

//Let's get our program running

int main()

 {
//we need a device to render our program

MyEventReceiver receiver;


   device = createDevice(video:: EDT_OPENGL ,
    core::dimension2d<s32>(640, 480), 32, false,true,true,&receiver);

	if (device == 0)
		return 1; // could not create selected driver.

    //! initializing Magic Library
    bool rslt = InitMagic(device);
    if(rslt == false)
          printf("Magic Library will only work with OpenGL driver");

	driver = device->getVideoDriver();
	smgr = device->getSceneManager();
    SplashSmgr = smgr->createNewSceneManager();

	//Our main world is loaded from a pk3 zip file.
    device->getFileSystem()->addZipFileArchive("../../media/map-20kdm2.pk3");


//************ MAIN WORLD MESH	*************************************************
//This world is complete with Irrlicht Collisions

	scene::IAnimatedMesh* q3levelmesh = smgr->getMesh("20kdm2.bsp"); //It's in the zip file. No need to give directions.
	scene::ISceneNode* q3node = 0;

	if (q3levelmesh)
		q3node = smgr->addOctTreeSceneNode(q3levelmesh->getMesh(0));


	scene::ITriangleSelector* selector = 0;

	if (q3node)
	{
		q3node->setPosition(core::vector3df(-1370,-130,-1400));

		selector = smgr->createOctTreeTriangleSelector(q3levelmesh->getMesh(0), q3node, 128);
		q3node->setTriangleSelector(selector);
		selector->drop();
	}
//******How about a fire made with the Particle Scene Node*********************
// create camp fire


    scene::IParticleSystemSceneNode* campFire = 0;
	campFire = smgr->addParticleSystemSceneNode(false);
	campFire->setPosition(core::vector3df(50,50,600));
	campFire->setScale(core::vector3df(2,2,2));

	campFire->setParticleSize(core::dimension2d<f32>(20.0f, 10.0f));

	scene::IParticleEmitter* em = campFire->createBoxEmitter(
		core::aabbox3d<f32>(-7,0,-7,7,1,7),
		core::vector3df(0.0f,0.06f,0.0f),
		80,100, video::SColor(0,255,255,255),video::SColor(0,255,255,255), 800,2000);

	campFire->setEmitter(em);
	em->drop();

	scene::IParticleAffector* paf = campFire->createFadeOutParticleAffector();
	campFire->addAffector(paf);
	paf->drop();

	campFire->setMaterialFlag(video::EMF_LIGHTING, false);
	campFire->setMaterialTexture(0, driver->getTexture("../../media/fireball.bmp"));
	campFire->setMaterialType(video::EMT_TRANSPARENT_VERTEX_ALPHA);


//FPS CAMERA ************No Camera, No Scene*************************************

	scene::ICameraSceneNode* camera =
		smgr->addCameraSceneNodeFPS(0, 100.0f, 300.0f);
	camera->setPosition(core::vector3df(-100,50,-150));
//Let's add a collision animator to the camera so that we have collision and gravity
scene::ISceneNodeAnimator* anim =    smgr->createCollisionResponseAnimator(
		selector, camera, core::vector3df(30,50,30),
		core::vector3df(0,-3,0),
		core::vector3df(0,50,0));
	camera->addAnimator(anim);
	anim->drop(); //Do not forget to drop the animator when we are finished with it.

	// disable mouse cursor ******We don't want to see that ugly thing.*********

	device->getCursorControl()->setVisible(false);


//***********************************************************

	scene::ISceneNode* selectedSceneNode = 0;
	scene::ISceneNode* lastSelectedSceneNode = 0;

//**********************************************************

//********************************************************
//       splash window stuff & music

     InitSplash();
     TSplash *splah = new TSplash(driver);
     splah->playSplash(RenderSplash,55000,640,200);
     SplashSmgr->drop();
     Music->SetVolume(0);

//********************************************************

	int lastFPS = -1;

	while(device->run())
	if (device->isWindowActive())
	{
		driver->beginScene(true, true, 0);

		smgr->drawAll(); //Draw the scene.


		core::line3d<f32> line;
		line.start = camera->getPosition();
		line.end = line.start + (camera->getTarget() - line.start).normalize() * 1000.0f;

		core::vector3df intersection;
		core::triangle3df tri;

		if (smgr->getSceneCollisionManager()->getCollisionPoint(
			line, selector, intersection, tri))
		{


			driver->setTransform(video::ETS_WORLD, core::matrix4());

		}


		selectedSceneNode = smgr->getSceneCollisionManager()->getSceneNodeFromCameraBB(camera);

		if (lastSelectedSceneNode)
			lastSelectedSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);

		if (selectedSceneNode == q3node)
			selectedSceneNode = 0;

		if (selectedSceneNode)
			selectedSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);

		lastSelectedSceneNode = selectedSceneNode;


		/*
		That's it, we just have to finish drawing.
		*/

		driver->endScene();

		int fps = driver->getFPS();

		if (lastFPS != fps)
		{
		  core::stringw str = L"DemoWorld - Irrlicht Engine Example [";
		  str += driver->getName();
		  str += "] FPS:";
		  str += fps;

		  device->setWindowCaption(str.c_str());
		  lastFPS = fps;
		}
	}

	device->drop();

	return 0;
}

thanks
alguem
Posts: 14
Joined: Fri Jun 09, 2006 10:43 pm

Post by alguem »

i am using dev-c++, i could to use the library using OPENGL but i need to use with DIRECTX, i am using DxMagic2d.hpp and DxMagic2d.lib and iam getting 63 linker errors. what to do?
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

post some of those link errors to tell you what libraries to link with.

i am working on new Magic library that relies on shader language,see this link

http://irrlicht.sourceforge.net/phpBB2/ ... 9862#79862
alguem
Posts: 14
Joined: Fri Jun 09, 2006 10:43 pm

Post by alguem »

Code: Select all

main.o(.text+0x3d2e):main.cpp: undefined reference to `InitMagic(irr::IrrlichtDevice*)'
main.o(.text+0x5450):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x545c):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x5d80):main.cpp: undefined reference to `ViewPerspective()'

main.o(.text+0x5d8c):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x5dca):main.cpp: undefined reference to `ViewOrtho()'
main.o(.text+0x5dd6):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x5df2):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'
main.o(.text+0x5dff):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x5e6b):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x5e77):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x5f0a):main.cpp: undefined reference to `ViewOrtho()'
main.o(.text+0x5f16):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x5f32):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'

main.o(.text+0x5f3f):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x6086):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x6092):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x6125):main.cpp: undefined reference to `ViewOrtho()'

main.o(.text+0x6131):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x614d):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'
main.o(.text+0x615a):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x62a1):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x62ad):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x6340):main.cpp: undefined reference to `ViewOrtho()'
main.o(.text+0x634c):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x6368):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'
main.o(.text+0x6375):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x64bc):main.cpp: undefined reference to `ViewPerspective()'

main.o(.text+0x64c8):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x655b):main.cpp: undefined reference to `ViewOrtho()'
main.o(.text+0x6567):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x6583):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'
main.o(.text+0x6590):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x66d7):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x66e3):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x6776):main.cpp: undefined reference to `ViewOrtho()'
main.o(.text+0x6782):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x679e):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'
main.o(.text+0x67ab):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x68f2):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x68fe):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x6991):main.cpp: undefined reference to `ViewOrtho()'
main.o(.text+0x699d):main.cpp: undefined reference to `SetBlend(int)'
main.o(.text+0x69b9):main.cpp: undefined reference to `SetColor(unsigned char, unsigned char, unsigned char)'
main.o(.text+0x69c6):main.cpp: undefined reference to `SetAlpha(float)'
main.o(.text+0x7844):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x788a):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x78d0):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x7916):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x795c):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x79a2):main.cpp: more undefined references to `DrawImage(irr::video::SMaterial, float, float)' follow
main.o(.text+0x7db5):main.cpp: undefined reference to `KeyDown(unsigned long)'
main.o(.text+0x7e23):main.cpp: undefined reference to `KeyDown(unsigned long)'
main.o(.text+0x7e91):main.cpp: undefined reference to `KeyDown(unsigned long)'
main.o(.text+0x7f7e):main.cpp: undefined reference to `KeyDown(unsigned long)'
main.o(.text+0x812d):main.cpp: undefined reference to `SetRotation(float)'

main.o(.text+0x8171):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x81d5):main.cpp: undefined reference to `SetRotation(float)'
main.o(.text+0x81fb):main.cpp: undefined reference to `DrawImage(irr::video::SMaterial, float, float)'
main.o(.text+0x8208):main.cpp: undefined reference to `SetRotation(float)'
main.o(.text+0x8224):main.cpp: undefined reference to `ViewPerspective()'
main.o(.text+0x8230):main.cpp: undefined reference to `SetBlend(int)'
alguem
Posts: 14
Joined: Fri Jun 09, 2006 10:43 pm

Post by alguem »

i think i know what is wrong, looks like this lib is only for visual studio, and iam using dev-c++. the opengl version has a .lib and a .a, the directx one got only the .lib. may you make a .a for gcc?
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

instead of creating new one for Dx dev-C++ users, as i said ,i am working in new Magic Library that will has most of Magic2D library features and could be applied to 3D Chars and 2D Images , also it will be one code for Dx and Opengl users.

see the previous link.
alguem
Posts: 14
Joined: Fri Jun 09, 2006 10:43 pm

Post by alguem »

but there isnt anything for downloading at that link :|
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

yes , it is a testing stage, you could copy and past the test codes from code snippets to a new project that you create and test it.

first i want to test that base code in many systemes befor i go farther, in my system i have test it with High and low level Dx shader and only low level Opengl my system does not supports GLSL.
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

Hi All

here is the an Open source of Magic3D Library , it is based on Shader Laguage, it is testing stage so please if you want to contribute this project , test it and feed back your opinuion.

the media files needed are in media folder of any magic2d Library.

here is the link

http://bcxdx.spoilerspace.com/BCXGL/tes ... Lbrary.zip

Image

Enjoy it.
alguem
Posts: 14
Joined: Fri Jun 09, 2006 10:43 pm

Post by alguem »

cmon man, this magic3D isnt what i need, i really need that magic2D with support for directx at dev-c++. iam making a full 2D online game and not everyone got a video card with support for opengl, only directx. please man... :( :(
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

alguem

wait please,i know that you want Magic2d for Dev-C++ for DX.

first directx 9 under Dev-C++ is illegal,
socend Dx version has not have all the features those were in Opengl,
3th Magic3D will have most of the features of OpenGL and will be open source and one code for OpenGl and directx users.
4th wait please it will take some times for Magic3D Library to be ready for use
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Post by hybrid »

@alguem: Learn to use your Compiler. It will help you, not only in the above situation!
@emil: Why in the world should DX with Dev-c++ be illegal :shock:
Emil_halim
Posts: 518
Joined: Tue Mar 29, 2005 9:02 pm
Location: Alex,Egypt
Contact:

Post by Emil_halim »

hybrid: it is Microsoft strategy,you know i hate this company.
Post Reply