Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - caza

#1
Programación gráfica / Re:Modificar vértices de mallas 3D
23 de Noviembre de 2014, 03:53:03 PM
Pues uso c++.

La cuestión es... Hay alguna manera (función) de modificar vértices desde c++ puro?

O tengo que aprender directX o alguno similar?

Gracias!
#2
Programación gráfica / Re:Modificar vértices de mallas 3D
22 de Noviembre de 2014, 10:48:38 PM
Pues lo que quiero hacer es un pequeño creador de terrenos, ósea agregar una malla plana y luego ir modificabdola.

Gracias.
#3
Programación gráfica / Modificar vértices de mallas 3D
22 de Noviembre de 2014, 05:13:23 PM
Hola,

Tengo una duda...

Se puede manipular la forma de las mallas 3D, por ejemplo moviendo los vértices,
con c++ sin usar ninguna api?  Si es así me gustaría saber como puedo hacerlo.

Muchas gracias!!
#4
General Programadores / Infracción de acceso
27 de Agosto de 2014, 12:26:53 AM
Hola!

Hice un pequeño demo en c++ y con la librería dark GDK.

El problema es que después de hacerlo formatee el PC y me puse Windows 8 y ahora me da un montón de infracciones de acceso.

Excepción no controlada en 0x0086968a en WarOfDragons.exe: 0xC0000005: Infracción de acceso al escribir en la ubicación 0x00000004.

Si alguien me puede decir por que son y como solucionarlos.

Por si alguien quiere mirarlo dejo el link de descarga:

http://www.mediafire.com/download/4812tn667plkcvs/WarOfDragons.rar

Gracias!
#5
Programación gráfica / Re: Problema con Orgre3D
04 de Junio de 2012, 04:32:40 PM
Este es el error grave...
Excepción no controlada en 0x5e303e21 en EsqueletoOgre.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0xcccccd0c.
#6
Programación gráfica / Problema con Orgre3D
04 de Junio de 2012, 04:26:22 PM
Hola!

Bueno, tengo este código copiado (para después hacer unos ejercicios) y me da error grave... no se si es por que no encuentra los archivos necesarios o no se...

Código (cpp) [Seleccionar]
#include <ogre.h>
#include <OIS\OIS.h>

using namespace Ogre;

class ExitListener : public FrameListener
{
public:
   ExitListener(OIS::Keyboard*keyboard):mKeyboard(keyboard)
   {
   }

   bool frameStarted(const FrameEvent& evt)
   {
      mKeyboard->capture();
      return !mKeyboard->isKeyDown(OIS::KC_ESCAPE);
   }

private:
   OIS::Keyboard *mKeyboard;
};

// La clase Application contendra los metodos para inicializar una aplicacion Ogre.
class Application
{
public: // Al invocar al metodo go se realizaran las inicializaciones de los subsistemas en el orden indicado
   void go()
   {
      createRoot();
      defineResources();
      setupRenderSystem();
      createRenderWindow();
      initializeResourceGroups();
      setupScene();
      setupInputSystem();
      createFrameListener();
      startRenderLoop();
   }

   ~Application()
   {
      mInputManager->destroyInputObject(mKeyboard);
      OIS::InputManager::destroyInputSystem(mInputManager);
       
      delete mListener;
      delete mRoot;
   }

private:
   Root*mRoot;
   OIS::Keyboard*mKeyboard;
   OIS::InputManager*mInputManager;
   ExitListener*mListener;

   // El objeto root es el núcleo de Ogre, nada se puede hacer en ogre si previamente no se crea root
   void createRoot()
   {
      mRoot = new Root();
   }

   void defineResources()
   {
      String secName, typeName, archName;
      ConfigFile cf;
      cf.load("resources.cfg");
      ConfigFile::SectionIterator seci = cf.getSectionIterator();
      while(seci.hasMoreElements())
      {
         secName = seci.peekNextKey();
         ConfigFile::SettingsMultiMap*settings = seci.getNext();
         ConfigFile::SettingsMultiMap::iterator i;
         for(i=settings->begin(); i!=settings->end(); ++i)
         {
            typeName = i->first;
            archName = i->second;
            ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName);
         }
      }
   }


   
   // En este paso se indica aspectos refernetes a la configuracion grafica con la que se va a mostrar la aplicacion
   //( OpenGL o DirectX, resolucion, anti aliasing y pantalla completa) 
   void setupRenderSystem()
   {
      RenderSystem *rs = mRoot->getRenderSystemByName("Direct3D9 Rendering Subsystem");
      mRoot->setRenderSystem(rs);
      rs->setConfigOption("Full Screen", "No");
      rs->setConfigOption("Video Mode", "800 x 600 @ 32-bit colour");
   }

   

   // Crear la ventana principal
   void createRenderWindow()
   {
      mRoot->initialise(true, "tutorial");

   }

   void initializeResourceGroups()
   {
      TextureManager::getSingleton().setDefaultNumMipmaps(5);
      ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
   }

   // En este apartado es donde se monta la escena: se colocab camaras, luces, objetos, efectos, etc...
   void setupScene()
   {// Creamos el SceneManager
      SceneManager* mSceneMgr = mRoot->createSceneManager(ST_GENERIC, "default Smanager");

      // Creamos y configuramos la camara
      Camera* cam;
      cam = mSceneMgr->createCamera("cámara");
      cam->setNearClipDistance(1);
      cam->setFarClipDistance(500);
      cam->setPosition(150.0, 120.0, 0.0);
      cam->lookAt(0.0, 50.0, 0.0);

      // Creamos la luz
      Light* light = mSceneMgr->createLight("luz1");
      light->setType(Light::LT_POINT);
      light->setPosition(0, 100, 0);
      light->setDiffuseColour(0.4, 0.4, 0.4);
      light->setSpecularColour(0.2, 0.3, 0.2);
      Viewport *vp = mRoot->getAutoCreatedWindow()->addViewport(cam);

      // Luz ambiente
      mSceneMgr->setAmbientLight(ColourValue(0.2,0.2,0.2));

      // Creamos un objeto
      Entity* ent;
      ent = mSceneMgr->createEntity("Robot", "robot.mesh");
      SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");
      node->setPosition(0.0,0.0,0.0);
      node->attachObject(ent);

   }

   // Sistema de entrada
   void setupInputSystem()
   {
      size_t windowHnd = 0;
      std::ostringstream windowHndStr;
      OIS::ParamList pl;
      RenderWindow * win = mRoot->getAutoCreatedWindow();

      win->getCustomAttribute("WINDOW", &windowHnd);
      windowHndStr<<windowHnd;
      pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
      mInputManager = OIS::InputManager::createInputSystem(pl);

      try
      {
         mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject(OIS::OISKeyboard, false));
      }
      catch (const OIS::Exception&e)
      {
         throw Exception(42, e.eText, "Application::setupInputSystem");
      }
   }


   void setupCEGUI()
   {
   }

   // Gestiona los eventos de la ventana principal
   void createFrameListener()
   {
      mListener = new ExitListener(mKeyboard);
      mRoot->addFrameListener(mListener);
   }

   // Bucle de repintdo
   void startRenderLoop()
   {
      mRoot->startRendering();
   }
};

int main(int argc, char **argv)
{
   try
   {
      Application app;
      app.go();
   }

   catch(Exception&e)
   {
      fprintf(stderr, "An exception has ocurred %s\n", e.getFullDescription().c_str());
   }

   return 0;
}
#7
Programación gráfica / Re: OpenGL Texturas
22 de Mayo de 2012, 09:56:54 AM
Vaya fallo... XD copie el código de una pirámide que hice antes en vez de el código del cubo... Muchas gracias xD
#8
Programación gráfica / Re: OpenGL Texturas
21 de Mayo de 2012, 11:02:03 PM
Muchas gracias por responder..

En teoria lo tenia bien pero cuando compilo me salen tres caras del cubo bien, dos a medio completar y una transparente.

A ver si me puedes decir por que es...

Gracias!
#9
Programación gráfica / OpenGL Texturas
21 de Mayo de 2012, 09:04:09 PM
Buenas!

Tengo que aplicar una textura de ladrillos a un cubo pero la verdad es que la explicacion que me dan de como se aplican las texturas en los vertex no es muy buena y me gustaria basicamente eso, que a ver si me lo podeis explicar mejor este punto:

glTexCoord2f(1.0f, 1.0f); glVertex3f(0,1,1);

Y de paso os dejo el codigo.
Código (cpp) [Seleccionar]
#include <Windows.h>
#include <GL\GL.h>
#include <GL\GLU.h>
#include <GL\glut.h>
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
#include <conio.h>
#define BITMAP_ID 0x4D42
GLuint nombres_texturas;
int angulo;

void init(void);
void redraw(void);
void reshape(int, int);

BITMAPINFOHEADER bitmapInfoHeader;
unsigned char* bitmapData;

unsigned char* LoadBitmapFile(char *filename, BITMAPINFOHEADER *bitmapInfoHeader)
{
   FILE *filePtr;                       // Puntero a programa
   BITMAPFILEHEADER bitmapFileHeader;   // Bitmap file header
   unsigned char *bitmapImage;          // Bitmap image data
   int imageIdx = 0;             // Index de la imagen
   unsigned char tempRGB;

   // Abrimos el archivo en binary mode
   filePtr = fopen(filename,"rb");
   if(filePtr == NULL)
      return NULL;

   // Leemos el bitmap file header
   fread(&bitmapFileHeader, sizeof(BITMAPFILEHEADER),1,filePtr);

   // Verificamos que sea un BItmap
   if(bitmapFileHeader.bfType != BITMAP_ID)
   {
      fclose(filePtr);
      return NULL;
   }

   // Leemos la información del bitmap header
   fread(bitmapInfoHeader, sizeof(BITMAPINFOHEADER),1,filePtr);

   // Movemos el puntero al principio del bitmap
   fseek(filePtr, bitmapFileHeader.bfOffBits, SEEK_SET);

   // Guardamos suficiente memoria para el archivo
   bitmapImage=(unsigned char*) malloc(bitmapInfoHeader->biSizeImage);

   // Verificamos la memoria
   if(!bitmapImage)
   {
      free(bitmapImage);
      fclose(filePtr);
      return NULL;
   }
   fread(bitmapImage,1,bitmapInfoHeader->biSizeImage,filePtr);
   if(bitmapImage == NULL)
   {
      fclose(filePtr);
      return NULL;
   }

   // Cambiamos la imagen a RGB
   for(imageIdx = 0; imageIdx<(int)bitmapInfoHeader->biSizeImage; imageIdx+=3)
   {
      tempRGB = bitmapImage[imageIdx];
      bitmapImage[imageIdx]=bitmapImage[imageIdx+2];
      bitmapImage[imageIdx + 2] = tempRGB;
   }

   // Cerramos el archivo y devolvemos la imagen
   fclose(filePtr);
   return bitmapImage;
}

void init(void)
{
   glClearColor(1.0,1.0,1.0,0.0); // Color fondo pantalla
   glEnable(GL_CULL_FACE);
   glEnable(GL_DEPTH_TEST); // Test de profundidad !IMPORTANTE
   glShadeModel(GL_SMOOTH); // Modo sombreado de poligonos
   glMatrixMode(GL_MODELVIEW);
   gluLookAt(3,-3,3,0,0,0,0,1,0);

   glEnable(GL_TEXTURE_2D);
   glGenTextures(1,&nombres_texturas); // Genero el nombre de la textura

   glBindTexture(GL_TEXTURE_2D, nombres_texturas); // Activamos la textura
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
   bitmapData = LoadBitmapFile("agua.bmp", &bitmapInfoHeader);
   gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, bitmapInfoHeader.biWidth,
      bitmapInfoHeader.biHeight, GL_RGB, GL_UNSIGNED_BYTE, bitmapData);

}

void animacion(void)
{
   angulo = (angulo+1)%360;
   Sleep(50);
   glutPostRedisplay();
}

void redraw()
{
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glPushMatrix();
   // Activo la textura

   glRotatef(angulo,0,1,0);
   glBindTexture(GL_TEXTURE_2D, nombres_texturas);

   // Primera cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

    // Segunda cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(1,0,1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(1,0,-1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

   // Tercera cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(1,0,-1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,-1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

   // Cuarta cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,-1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,1);
   glTexCoord2f(0.5f, 1.0f); glVertex3f(0,2,0);
   glEnd();

   // Quinta cara
   glBegin(GL_POLYGON);
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-1,0,1);
   glTexCoord2f(1.0f, 0.0f); glVertex3f(-1,0,-1);
   glTexCoord2f(1.0f, 1.0f); glVertex3f(1,0,-1);
   glTexCoord2f(0.0f, 1.0f); glVertex3f(1,0,1);
   glEnd();
   glPopMatrix();
   glutSwapBuffers();
}

void reshape( int anchura, int altura)
{
   glViewport(0,0,(GLsizei) anchura, (GLsizei)altura);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(40.0, (GLfloat) anchura/(GLfloat) altura, 1.0, 20.0);
   glMatrixMode(GL_MODELVIEW);
}

   void keyboard(unsigned char tecla, int x, int y)
   {
      if(tecla==27) exit(0);
      if(tecla=='a') glutIdleFunc(animacion);
      if(tecla=='p') glutIdleFunc(NULL);
   }

   void main( int argc, char*argv[])
   {
      glutInit(&argc, argv);
      glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
      glutInitWindowSize(320, 240);
      glutCreateWindow("Mapa de Bits");
      init();
      glutDisplayFunc(redraw);
      glutReshapeFunc(reshape);
      glutKeyboardFunc(keyboard);
      glutIdleFunc(animacion);
      glutMainLoop();
   }


Gracias.
#10
General Programadores / Duda for
28 de Marzo de 2012, 06:48:32 AM
Hola, Tengo este ejercicio en el que tengo casi todo resuelto pero me falta que el espacio de cada fila sea igual al numero de la fila, por ejemplo en la fila uno un espacio en la dos dos espacios y asi hasta la nueve. Si alguien me puede dar una pista lo agradeceria mucho...

Gracias.
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
     
int main()
{
   int filas = 9;
   int i;
   int j;
   int espacio;

   for(i = 1; i <= filas; i++)
   {
      for(espacio = i; espacio <= i; espacio++)
         cout << " ";
      cout<<i;
      for(j = i + 1; j <= (2 * i - 1); j++)
         cout << j%10;
      for(j=j-2; j >= i; j--)
         cout << j%10;
      cout << endl;
   }
   getchar();
   getchar();
   return 0;
}
#11
Principiantes / Compilando
11 de Diciembre de 2011, 12:32:33 PM
Hola, con este código en que carpeta se supone que tienen que estar alojados mis iconos...

//-------------------------------------
// Recursos Meteoritos
// Archivo de recursos / Meteoritos.rc
//-------------------------------------

// Archivos de inclusión
#include "Recursos.h"

//Iconos
IDI_METEORITO ICON "Recursos\\Meteorito.ico"
IDI_METEORITO_SM ICON "Recursos\\Meteorito.ico"

He probado moverlos a todas las carpetas y el nombre esta igual.. tambien he probado incluir una linea mas al final en blanco y nada..

El error es este ...

1>Meteoritos.rc(10): error RC2135: file not found: Recursos\Meteorito.ico
1> 
1> 
1>Meteoritos.rc(11): error RC2135: file not found: Recursos\Meteorito.ico


Gracias.
#12
Principiantes / compilador gratuito
09 de Diciembre de 2011, 07:59:20 AM
Hola, alguien me puede decir un compilador gratuito o un programa que me permita crear archivos .rc compatible con visual studio c++.

Normalmente uso Microsoft visual studio c++ 2010 express pero he comprobado que por ser gratuito no me permite crear .rc.

Muchas gracias.
#13
General Programadores / Nuevo error al compilar
23 de Noviembre de 2011, 10:11:52 PM
1>  Todas las salidas están actualizadas.
1>ResourceCompile:
1> 
1>Meteoritos.rc(6): error RC2135: file not found: Recursos\Meteorito.ico
1> 
1> 
1>Meteoritos.rc(7): error RC2135: file not found: Recursos\Meteorito_sm.ico
1> 
1>
1>ERROR al compilar.

Hola, me ha surgido otro error al compilar y no entiendo por que, tengo el archivo que "no encuentra" y tiene el nombre bien osea que no entiendo..

Puede ser que pase por algun otro motivo?

Gracias.
#14
General Programadores / Re: Error al compilar
23 de Noviembre de 2011, 08:19:44 PM
Solucionado!!
#15
General Programadores / Error al compilar
23 de Noviembre de 2011, 08:01:23 PM
Hola a ver si alguien me puede decir por que se me produce este error:

1>Recursos.h(6): fatal error RC1004: unexpected end of file found.

Código (cpp) [Seleccionar]
//Identificadores de recursos
//Encabezado C++ / Recursos.h

//Iconos Rango : 1000 - 1100
#define IDI_METEORITO 1000
#define IDI_METEORITO_SM 1001


Gracias.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.