No encuentro nada con ese nombre, tendré que buscar más info en internet antes de seguir con la duda.
No encuentro nada con ese nombre, tendré que buscar más info en internet antes de seguir con la duda.
GameMaster, "switches del compilador" ==> compiler settings es el primer tab de la ventana de opciones.
Puedes poner las DLLs de SDL en Windows en un solo directorio, siempre que lo añadas al PATH. Panel de control > Sistema > Avanzadas > Variables de entorno > Path > Modificar > Añadir la carpeta de la SDL.
OpenGL y OpenGL-ES son tecnologías estándar y hay millones de ejemplos y tutoriales de ambos en la página oficial y en cientos de páginas más. Pickle también hizo en GP32X un tutorial sobre opengl-es en la Wiz.
Página oficial de OpenGL
Tutoriales en la página de OpenGL-ES
Lecciones de OpenGL en NeHe
Última edición por hardyx; 22/04/2010 a las 09:55
Si lo seLo tengo así para "separarlo" de la configuración 'oficial' del pdf
Grácias, voy a echar un ojo al tutorial de Pickle, igual me resuelve el problema.
< - >He estado repasando un poco tus páginas, la verdad es que no quiero tutoriales de OpenGlPero si saber porque en host no me sale nada en OpenGL.
Si alguien me quiere ayudar es muy sencillo, probad este ejemplo de fungp (http://fungp.co.kr/dv/ne2_v.asp), que dibuja un poligono (dibuja más dos objetos, sólo hay que descomentarlos y llamarlos en el main).
En la Wiz (target) me funciona, pero en host (windows) no lo hace, se sale del programa, genera el fichero txt de error, pero no pone nada en el.
A ver si os funciona en host, sólo pido eso y la forma de que me funcione.
Grácias antecipadas.
/************************************************** ******************************
Copyright(C) Gamepark Holdings. All rights reserved.
Dogma-G Game Studios
In-House Library DGE
C++ compiler support with SDL
(gcc-4.0.2-glibc-2.3.6)
************************************************** ******************************/
#include "SDL.h"
#include "SDL_mixer.h"
#include "DGE_Frame.h"
#include "DGE_Display.h"
#include "DGE_Render.h"
#include "DGE_SurfaceManager.h"
#include "DGE_Log.h"
#include "DGE_Input.h"
#include "DGE_Fixed.h"
#include "DGE_PublicFont.h"
#include "DGE_Sound.h"
#include "DGE_DRM.h"
#include "DGE_File.h"
#include "DGE_Vector.h"
#include "DGE_Matrix.h"
//#include "DGE_Quaternion.h"
#include <stdlib.h>
#include <time.h>
#include <math.h>
//================================================== ============================
// Defines.
//================================================== ============================
#ifdef WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDL_image.lib")
#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "Opengl32.lib")
#pragma comment(lib, "SDL_mixer.lib")
#pragma comment(lib, "SDL_ttf.lib")
#pragma comment(lib, "DGE_VC2003.lib")
#endif
//================================================== ============================
// Grobal values.
//================================================== ============================
SDL_Event g_Event;
bool g_bMainLoop = true;
// 2Â÷¿ø ÁÂÇ¥ ÀÚ·áÇü
struct Vector2
{
float x;
float y;
Vector2()
{
x = 0.0f;
y = 0.0f;
}
};
// Ä÷¯ ÀÚ·áÇü
struct Color
{
unsigned char red;
unsigned char green;
unsigned char blue;
unsigned char alpha;
Color()
{
red = 255;
green = 255;
blue = 255;
alpha = 255;
}
};
// Á¤Á¡ Á¤º¸
GLshort vertices[9] = {
// ÁÂÃø »ó´Ü Á¤Á¡
0, 0, 0,
// ¿ìÃø »ó´Ü Á¤Á¡
320, 0, 0,
// ÁÂÃø ÇÏ´Ü Á¤Á¡
0, 240, 0
};
// ÅØ½ºÃ³ ÁÂÇ¥ Á¤º¸
GLfloat texturecoords[6] = {
// ÁÂÃø »ó´Ü
0.0f, 0.0f,
// ¿ìÃø »ó´Ü
1.0f, 0.0f,
// ÁÂÃø ÇÏ´Ü
0.0f, 1.0f
};
// »ö»ó Á¤º¸
GLubyte colors[12] = {
// ÁÂÃø »ó´Ü Á¤Á¡( »¡°£»ö )
255, 0, 0, 255,
// ¿ìÃø »ó´Ü Á¤Á¡( ÃÊ·Ï»ö )
0, 255, 0, 255,
// ÁÂÃø ÇÏ´Ü Á¤Á¡( ÆÄ¶õ»ö )
0, 0, 255, 255
};
// ¿À°¢Çü Á᫐ ±âÁØ °¢ ²ÀÁöÁ¡ ¹æÇâ( x cos, y sin )
float pentagonUnit[10] = {
// ù¹øÂ° ²ÀÁöÁ¡ 270
0.0f, // x
-1.0f, // y
// µÎ¹øÂ° ²ÀÁöÁ¡ 342
0.951057f,
-0.309017f,
// ¼¼¹øÂ° ²ÀÁöÁ¡ 54
0.587785f,
0.809017f,
// ³×¹øÂ° ²ÀÁöÁ¡ 126
-0.587785f,
0.809017f,
// ´Ù¼¸¹øÂ° ²ÀÁöÁ¡ 198
-0.951057f,
-0.309017f,
};
// ¿À°¢Çü Ãâ·Â( ÅØ½ºÃ³ ¹Ì»ç¿ë )
void DrawPentagon(float positionX, float positionY, int value1, int value2, int value3, int value4, int value5)
{
// ¿À°¢Çü Á¤Á¡ Á¤º¸ °ø°£ »ý¼º, ¼³Á¤
GLshort pentagonVertices[21] =
{
// Áß½ÉÁ¡
(short)positionX,
(short)positionY,
0,
// ù¹øÂ° ²ÀÁöÁ¡
(short)(positionX + pentagonUnit[0] * value1),
(short)(positionY + pentagonUnit[1] * value1),
0,
// µÎ¹øÂ° ²ÀÁöÁ¡
(short)(positionX + pentagonUnit[2] * value2),
(short)(positionY + pentagonUnit[3] * value2),
0,
// ¼¼¹øÂ° ²ÀÁöÁ¡
(short)(positionX + pentagonUnit[4] * value3),
(short)(positionY + pentagonUnit[5] * value3),
0,
// ³×¹øÂ° ²ÀÁöÁ¡
(short)(positionX + pentagonUnit[6] * value4),
(short)(positionY + pentagonUnit[7] * value4),
0,
// ´Ù¼¸¹øÂ° ²ÀÁöÁ¡
(short)(positionX + pentagonUnit[8] * value5),
(short)(positionY + pentagonUnit[9] * value5),
0,
// ù¹øÂ° ²ÀÁöÁ¡
(short)(positionX + pentagonUnit[0] * value1),
(short)(positionY + pentagonUnit[1] * value1),
0,
};
// ¿À°¢Çü »ö»ó Á¤º¸ °ø°£ »ý¼º, ¼³Á¤
GLubyte pentagonColors[28] =
{
// Áß½ÉÁ¡
255, 255, 255, 255,
// ù¹øÂ° ²ÀÁöÁ¡
255, 0, 0, 255,
// µÎ¹øÂ° ²ÀÁöÁ¡
0, 255, 0, 255,
// ¼¼¹øÂ° ²ÀÁöÁ¡
0, 0, 255, 255,
// ³×¹øÂ° ²ÀÁöÁ¡
255, 0, 0, 255,
// ´Ù¼¸¹øÂ° ²ÀÁöÁ¡
0, 255, 0, 255,
// ù¹øÂ° ²ÀÁöÁ¡
0, 0, 255, 255,
};
// Á¤Á¡ Á¤º¸ ¼³Á¤
glVertexPointer(3, GL_SHORT, 0, pentagonVertices);
// Á¤Á¡ Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_VERTEX_ARRAY);
// »ö»ó Á¤º¸ ¼³Á¤
glColorPointer(4, GL_UNSIGNED_BYTE, 0, pentagonColors);
// »ö»ó Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_COLOR_ARRAY);
// Ãâ·Â
glDrawArrays(GL_TRIANGLE_FAN, 0, 7);
// Á¤Á¡ Á¤º¸ ºñȰ¼ºÈ
glDisableClientState(GL_VERTEX_ARRAY);
// »ö»ó Á¤º¸ ºñȰ¼ºÈ
glDisableClientState(GL_COLOR_ARRAY);
}
// ´Ù°¢Çü Ãâ·Â( ÅØ½ºÃ³ »ç¿ë )
void DrawPolygon(short angleNumber, Vector2 position, short *distances, Color color)
{
// ¸Å°³º¯¼ö À¯È¿¼º °Ë»ç
if((angleNumber < 3) || (NULL == distances))
{
// À¯È¿ÇÏÁö ¾ÊÀº °æ¿ì
return;
}
// Á¤Á¡ Á¤º¸ ¼³Á¤ ÂüÁ¶ ¼öÄ¡ °ø°£ Å©±â = °¢ÀÇ °³¼ö X 2 ( 2Â÷¿ø ÁÂÇ¥ Ç¥½Ã )
size_t directionsSize = sizeof(float) * angleNumber * 2;
// Á¤Á¡ Á¤º¸ ¼³Á¤ ÂüÁ¶ ¼öÄ¡ °ø°£ »ý¼º
// ( Á᫐ Á¤Á¡ ±âÁØ °¢ ²ÀÁöÁ¡ ¹æÇâ )
float *verticesDirection = (float*)malloc(directionsSize);
// ÀúÀå °ø°£ »ý¼º ¼º°ø ¿©ºÎ È®ÀÎ
if(NULL == verticesDirection)
{
// »ý¼º ½ÇÆÐ
return;
}
// Á¤Á¡ Á¤º¸ ¼³Á¤ ÂüÁ¶ ¼öÄ¡ °ø°£ ÃʱâÈ
memset(verticesDirection, 0, directionsSize);
// °¢ ²ÀÁöÁ¡ »çÀÌ °¢µµ( ´ÜÀ§ ¶óµð¾È )
float radian = 3.14159265359 * 2 / angleNumber;
// ù¹øÂ° ²ÀÁöÁ¡ YÃà ÀÏÄ¡( ¹Ý½Ã°è ¹æÇâ 90µµ ȸÀü )
float offset = 3.14159265359 / 2;
// Á¤Á¡ Á¤º¸ ¼³Á¤ ÂüÁ¶ ¼öÄ¡ ¼³Á¤
for(int angleCount = 0; angleCount != angleNumber; ++angleCount)
{
// X Ãà ÁÂÇ¥ ¼³Á¤
verticesDirection[angleCount * 2 + 0] = cos(radian * angleCount - offset);
// Y Ãà ÁÂÇ¥ ¼³Á¤
verticesDirection[angleCount * 2 + 1] = sin(radian * angleCount - offset);
}
// Á¤Á¡ °³¼ö = °¢ÀÇ °³¼ö + 2 ( Á᫐ Á¤Á¡, º¹±Í Á¤Á¡ )
int vertexNumber = angleNumber + 2;
// Á¤Á¡ Á¤º¸ °ø°£ Å©±â = ÀÚ·áÇü ¹ÙÀÌÆ® Å©±â X Á¤Á¡ °³¼ö X 3 ( 3Â÷¿ø ÁÂÇ¥ Ç¥½Ã )
size_t vertexBufferSize = sizeof(GLshort) * vertexNumber * 3;
// ´Ù°¢Çü Á¤Á¡ Á¤º¸ °ø°£ »ý¼º
GLshort *polygonVertices = (GLshort*)malloc(vertexBufferSize);
// ÀúÀå °ø°£ »ý¼º ¼º°ø ¿©ºÎ È®ÀÎ
if(NULL == polygonVertices)
{
// »ý¼º ½ÇÆÐ
// ÀÌÀü »ý¼º ÀúÀå °ø°£ ÇØÁ¦
free(verticesDirection);
return;
}
// ´Ù°¢Çü Á¤Á¡ Á¤º¸ °ø°£ ÃʱâÈ
memset(polygonVertices, 0, vertexBufferSize);
// ´Ù°¢Çü Á¤Á¡ Á¤º¸ ¼³Á¤
for(int vertexCount = 0; vertexCount != vertexNumber; ++vertexCount)
{
// Á᫐ Á¤Á¡ È®ÀÎ
if(0 == vertexCount)
{
// Á᫐ Á¤Á¡ ¼³Á¤
// X Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[0] = (short)position.x;
// Y Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[1] = (short)position.y;
// Z Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[2] = 0;
}
// º¹±Í Á¤Á¡ È®ÀÎ
else if((vertexNumber - 1) == vertexCount)
{
// º¹±Í Á¤Á¡ ¼³Á¤
// X Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[vertexCount * 3 + 0] = (short)(position.x + verticesDirection[0 + 0] * distances[0]);
// Y Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[vertexCount * 3 + 1] = (short)(position.y + verticesDirection[0 + 1] * distances[0]);
// Z Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[vertexCount * 3 + 2] = 0;
}
else
{
// ±âŸ Á¤Á¡ ¼³Á¤( °¢ ²ÀÁöÁ¡ Á¤Á¡ )
// X Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[vertexCount * 3 + 0] = (short)(position.x + verticesDirection[(vertexCount - 1) * 2 + 0] * distances[vertexCount - 1]);
// Y Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[vertexCount * 3 + 1] = (short)(position.y + verticesDirection[(vertexCount - 1) * 2 + 1] * distances[vertexCount - 1]);
// Z Ãà ÁÂÇ¥ ¼³Á¤
polygonVertices[vertexCount * 3 + 2] = 0;
}
}
// »ö»ó Á¤º¸ °ø°£ Å©±â = Á¤Á¡ °³¼ö X 4 ( »ö»ó Á¤º¸ 3 + Åõ¸í Á¤º¸ 1 )
size_t colorsSize = sizeof(GLubyte) * vertexNumber * 4;
// »ö»ó Á¤º¸ °ø°£ »ý¼º
GLubyte *polygonColors = (GLubyte*)malloc(colorsSize);
// ÀúÀå °ø°£ »ý¼º ¼º°ø ¿©ºÎ È®ÀÎ
if(NULL == polygonColors)
{
// »ý¼º ½ÇÆÐ
// ÀÌÀü »ý¼º ÀúÀå °ø°£ ÇØÁ¦
free(verticesDirection);
free(polygonVertices);
return;
}
// »ö»ó Á¤º¸ ¼³Á¤
for(int vertexCount = 0; vertexCount != vertexNumber; ++vertexCount)
{
// »¡°£»ö äµµ
polygonColors[vertexCount * 4 + 0] = color.red;
// ÃÊ·Ï»ö äµµ
polygonColors[vertexCount * 4 + 1] = color.green;
// ÆÄ¶õ»ö äµµ
polygonColors[vertexCount * 4 + 2] = color.blue;
// Åõ¸íµµ
polygonColors[vertexCount * 4 + 3] = color.alpha;
}
// Á¤Á¡ Á¤º¸ ¼³Á¤
glVertexPointer(3, GL_SHORT, 0, polygonVertices);
// Á¤Á¡ Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_VERTEX_ARRAY);
// »ö»ó Á¤º¸ ¼³Á¤
glColorPointer(4, GL_UNSIGNED_BYTE, 0, polygonColors);
// »ö»ó Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_COLOR_ARRAY);
// Ãâ·Â
glDrawArrays(GL_TRIANGLE_FAN, 0, vertexNumber);
// Á¤Á¡ Á¤º¸ ºñȰ¼ºÈ
glDisableClientState(GL_VERTEX_ARRAY);
// »ö»ó Á¤º¸ ºñȰ¼ºÈ
glDisableClientState(GL_COLOR_ARRAY);
}
// »ï°¢Çü Ãâ·Â( ÅØ½ºÃ³ »ç¿ë )
void DrawTriangle()
{
// 2D ÅØ½ºÃ³ Ȱ¼ºÈ
glEnable(GL_TEXTURE_2D);
// ÅØ½ºÃ³ ÇÊÅ͸µ ¹æ½Ä ¼³Á¤
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// ÅØ½ºÃ³ ÁÂÇ¥ °æ°è ó¸® ¹æ½Ä ¼³Á¤
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// ÅØ½ºÃ³ ¾ÆÀ̵𠵥ÀÌÅÍ ¿¬°á
glBindTexture(GL_TEXTURE_2D, textureID);
// Á¤Á¡ Á¤º¸ ¼³Á¤
glVertexPointer(3, GL_SHORT, 0, vertices);
// Á¤Á¡ Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_VERTEX_ARRAY);
// »ö»ó Á¤º¸ ¼³Á¤
glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors);
// »ö»ó Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_COLOR_ARRAY);
// ÅØ½ºÃ³ Á¤º¸ ¼³Á¤
glTexCoordPointer(2, GL_FLOAT, 0, texturecoords);
// ÅØ½ºÃ³ Á¤º¸ Ȱ¼ºÈ
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
// Ãâ·Â
glDrawArrays(GL_TRIANGLE_FAN, 0, 3);
// Á¤Á¡ Á¤º¸ ºñȰ¼ºÈ
glDisableClientState(GL_VERTEX_ARRAY);
// »ö»ó Á¤º¸ ºñȰ¼ºÈ
glDisableClientState(GL_COLOR_ARRAY);
// 2D ÅØ½ºÃ³ ºñȰ¼ºÈ
glDisable(GL_TEXTURE_2D);
}
int DGE_Init()
{
g_cFrame.CreateFrame(DGE_FRAME_USE_ON, DGE_FRAME_USE_ON, DGE_FRAME_USE_ON);
g_cInput.Initialize();
g_cFrame.SetFrameName("DGE Frame Work", NULL);
g_cFrame.SetFPS(60);
g_cDisplay.SetDisplay(DGE_DISPLAY_DEFAULT_WIDTH,
DGE_DISPLAY_DEFAULT_HEIGHT, DGE_DISPLAY_DEFAULT_BPP);
g_cDisplay.CreateDisplay();
g_cSurface.AttachDisplay(&g_cDisplay);
g_cSurface.AllocateSurfaceSpace(32);
g_cRender.AttachSurfaceManager(&g_cSurface);
g_cRender.SetClearColor(0.0f, 0.0f, 0.0f, 1.0f);
g_cSound.CreateSound();
g_cSound.AllocateMusicSpace(12);
g_cSound.AllocateChunkSpace(64);
return 1;
}
int DGE_Remove()
{
g_cSurface.DestroySurfaceMgr();
g_cDisplay.DestroyDisplay();
g_cSound.DestroySound();
g_cRender.DestroyRender();
g_cFrame.DestroyFrame();
return 1;
}
int DGE_ResourceLoad()
{
// ¹è°æÈ¸é ÅØ½ºÃ³ ·Îµå
g_cSurface.LoadImageFromBinary(0, 0, "sprites/background.bmp");
// ¸ÊÇÎ ÅØ½ºÃ³ ·Îµå
g_cSurface.LoadImageFromBinary(1, 0, "sprites/mappingTexture.png");
return 1;
}
int DGE_main()
{
// ȸé ÃʱâÈ
g_cRender.Clear();
// ¹è°æÈ¸é Ãâ·Â
g_cRender.RenderImage(0, 0, 0);
//// »ï°¢Çü Ãâ·Â
//DrawTriangle();
//// ´Ù°¢Çü Ãâ·Â
//DrawPentagon(160.0f, 120.0f, 100, 100, 100, 100, 100);
// Ãâ·Â À§Ä¡ ¼³Á¤( ȸé Á᫐ )
Vector2 position;
position.x = DGE_DISPLAY_DEFAULT_WIDTH * 0.5f;
position.y = DGE_DISPLAY_DEFAULT_HEIGHT * 0.5f;
// °¢ ²ÀÁöÁ¡ °Å¸® ¼³Á¤
short distances[] = { 100, 80, 100, 70, 100, 60 };
// »ö»ó ¼³Á¤
Color color;
color.red = 255;
color.green = 255;
color.blue = 0;
color.alpha = 255;
// ´Ù°¢Çü Ãâ·Â
DrawPolygon(6, position, distances, color);
// ÀÔ·Â ÀåÄ¡ »óÅ °»½Å
g_cInput.ScanInputDevice();
// Á¾·á ¿©ºÎ È®ÀÎ
if(g_cInput.IsPushKey(DKEY_MENU))
{
// Á¾·á ¿äû
return 0;
}
return 1;
}
int main(int argc, char* argv[])
{
DGE_Init();
DGE_ResourceLoad();
while (g_bMainLoop)
{
if (g_cFrame.WaitSync())
{
if (0 == DGE_main())
{
g_bMainLoop = false;
break;
}
g_cDisplay.Flip();
}
}
DGE_Remove();
#ifndef _HOST_
g_cFrame.CallGP2XMenu();
#endif
return 1;
}
Última edición por GameMaster; 22/04/2010 a las 10:50 Razón: Edición automática anti doble-post.
Si te falla en Windows, es mucho más fácil de depurar que en la Wiz. Ejecutalo paso a paso y usa la función OutputDebugString("mensaje") para escribir mensajes en la ventana de resultados.
En la función DGE_ResourceLoad() mira si está cargando correctamente las imágenes. No he tocado el DGE, pero lo mismo no los encuentra en Windows por las barras o el path actual.
Última edición por hardyx; 22/04/2010 a las 12:03
Muchas grácias hardyx, es sin duda esto lo que me esta bloqueando, te adjunto el compilado para Windows y Wiz.
No la imagenes esas no existen, no las carga (en un error tratado que no sale), el problema (esto ya lo tengo muy claro), es cuando llamas alguna funcion opengl en host, esto hace que se salga de la aplicación y ya no ejecute nada más en el mainloop.
< - >[quote=hardyx;1063309]Si te falla en Windows, es mucho más fácil de depurar que en la Wiz. Ejecutalo paso a paso y usa la función OutputDebugString("mensaje") para escribir mensajes en la ventana de resultados.quote]
Eso ya lo he echo, si llamo una funcion con cosas opengl, esta se ejecuta hasta el final, porque al final tengo un printf que si se escribe en el log de salida, pero si despues en el mainloop por ejemplo, despues de la funcion esa, pongo otro printf, este ya no sale (si lo pongo dentro de la funcion al final, si sale), lo que concluyo que halgo hace que provoca problemas con el mainloop.
< - >Te pongo el ejemplo, en el main pongo esto:
printf("a");
DrawPolygon(6, position, distances, color);
printf("c");
dentro de DrawPoligon y al final de todo pongo: printf("b");
Todo se ejecuta, vas al log, y escribe: ab
O sea, ejecuta hasta el final DrawPoligon, pero despúes parece que se sale del mainloop, porque tendria que escribir: c, despúes!!!
Y si tuvieramos error en la funcion DrawPoligon, la letra b no se escribiria porque esta al final de la funcion...
Parece que hay error justo al salir de esa funcion y al seguir con el loop principal, esto sólo en host como ya he dicho ....
Si quitas la funcion DrawPoligon, si se ejecuta el loop correctamente, y tendriamos en el log:
acacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacaca.......... hasta salir...
Última edición por GameMaster; 22/04/2010 a las 13:37 Razón: Edición automática anti doble-post.
Buenas
No se si está bien que ponga estas cosas por aquí o debería hacerse de otra forma, la verdad es que voy muy justo de tiempo, y por lo menos quiero compartir lo que vaya descubriendo.
Como algunos ya sabeis en la fungp coreana tienen algo así como una lista de noticias con ejemplos de DGE y la referencia en pdf y chm:
http://fungp.co.kr/dv/ne2_l.asp#none <- aquí las entradas con tutoriales
Las descargas las hace a través de un asp, de forma que no os ofrece el nombre real, si pulsais el enlace dadle guardar como y poner el nombre que le pongo a continuación:
http://fungp.co.kr/common/board_down...?board_seq=716 -> DGEReference.chm
http://fungp.co.kr/common/board_down...?board_seq=513 -> DGE Reference_20100202.pdf
Las referencias están en coreano, claro, pero por lo menos representan una lista de clases, propiedades y métodos que poder usar, y copiando y pegando texto en http://translate.google.es/?hl=es&la...1&sl=ko&tl=en# tendreis una traducción al inglés que desde luego es más útil
También estoy descargando los ejemplos que hay en esa lista, y preparando proyectos para probarlos. Uso codeblocks instalado según la guía del sdk, inicio un proyecto de gp2x wiz y añado el fuente del ejemplo traducido al inglés (hay que ajustar algunas cosillas que descoloca el traductor).
De momento tengo listo el más reciente, touchdemo, me funciona tanto en host como en target, aunque en la wiz va muy lento... ¿alguien tiene idea de porqué?, en pc se cierra el programa con enter (en la referencia teneis el mapeo de pc a los botones de wiz en DGE_Input.IsPushKey), en wiz con el botón menú.
El archivo adjunto incluye el proyecto de codeblocks según mi configuración, bajo windows,y lo tengo instalado en c:\archivos de programa\gph_dsk revisad vuestras rutas según el caso.
Ya me contareis si os va y que tal va en la wiz si podeis probarlo
Codec off
Última edición por htdreams; 22/04/2010 a las 16:05
HtDreams / Proyecto Iris
Buenas, mientras sigo esperando a que alguien compile mi ejemplo, ya he probado el tuyo, he usado mi configuracion (lo que demuestra que no tendré así tal mal el entorno) y me compila perfectamente en host y target.
Tengo el mismo problema, en la consola va a velocidad de su abuela, es realmente triste que estos korenaos nos pongan ejemplos cutres que no funcionan bien!! Pero que consolas estos utilizan !?![]()
Uhmmm veamos:
Tu código es mas o menos el de la demo "DGE OpenGL ES Lite 1.1 Mix Sample", tanto en tu código como en el de la demo esa hay un include que no encuentra: #include "DGE_Quaternion.h"
No parece que sea necesario, pero si vas a tu carpeta del sdk (en mi caso c:\archivos de programa\gph_sdk) y entras en dge\include verás algo que se le parece como.... ¿DGE_Quatenion.h?
Estos tios metieron la gamba con el nombre del include, si lo abres verás que internamente lo llaman bien (esta claro que es una errata)
yo he copiado el mismo archivo en la misma carpeta con el nombre correcto DGE_Quaternion.h por si hay algún ejemplo, codigo o lo que sea que llame al nombre mal puesto (que me imagino que no, pero con 2ks de include como que me da igual tenerlo duplicado)
Con esto ya compila bien al descomentar esa línea, aunque no creo que sea necesario, pues con ella comentada compila bien la demo... y tu ejemplo si comento la línea 327: glBindTexture(GL_TEXTURE_2D, textureID); que no reconoce textureID ¿te falta algo por añadir?
Si pongo la carpeta sprites del 2dtutorial me muestra el fondo de estrellas (con la paleta en verdes en host, pero bien (en azules) en la wiz). No tengo la imagen de mappingTexture.png, aunque parece que no la usas, aún así le cree una en 256x256x16b.
Modifiqué también el DGE_main para añadir algo de animación y ver lo rápido que actualiza frames a 60fps (en el init se fuerza a que el DGE trabaje a 60 frames por segundo), pero el resultado no me parece ir tan rápido como debería... y eso que sólo es un polígono dibujándose, sin textura...
No se porqué no te funcionaba en host... con tu ejecutable compilado a mi tampoco me va.
He preparado un proyecto, como el de antes, con tu código y las imágenes. En la configuración del proyecto no añadí ningún vínculo con ninguna librería, funciona todo bien (en host supongo que cogerá la librería de opengl que tiene el sistema, del driver de nvidia en mi caso).
A ver si con esto te funciona
Por cierto, estoy adaptando el fuente de la demo esta con los comentarios traducidos al ingles (san google dixit) a ver si así averiguamos algo más. Lo que sí es cierto es que la referencia en chm ya está resultando útil (por si aún no la usas), de nuevo, google translator mediante :P
Codec off
HtDreams / Proyecto Iris
Si era ese ejemplo, pero no me acordaba del nombre y puse el que tenia en el proyecto.
Se me olvido quitar esa linea, porque estaba pintando el triangulo (uno de los 3 shapes de la demo) con una imagen.
Lo del include no sabia que lo tenia, pero concuerdo contigo de que no seria necesario.
O sea, el poligono ya te funciona en host?
Voy a mirar tu ejemplo.
Muchas Grácias!
< - >Acabo de compilar tu ejemplo y en host me ocurre exactamente lo mismo, el mio (651 kb) me genera el stderror y sale, he puesto tu exe, y funciona!!!!, el tuyo ocupa 1,08Mb, lo que concluyo que el tuyo esta tirando correctamente de la lib y esta incluyendo las funciones opengles en el exe!!!
Me tienes que enseñar capturas de tu configuración (voy a probar con tu proyecto a ver), el problema sólo puede ser este!
Y otra cosa, a ti te salen los warnings de opengles al compilar en host ?
Por cierto me imagino que las fuentes ttf en host tb te funcionen!, me falta algo y no se lo que es, a ver si con tu ayuda lo puedo arreglar de una vez.
Grácias, y te espero impaciente
PS: Mola tu animación![]()
Última edición por GameMaster; 23/04/2010 a las 00:21 Razón: Edición automática anti doble-post.
He probado tu entorno, he tenido que cambiar 'C:\Archivos de programa' por 'C:\Program Files', despues de esto ya pude compilar tambien con el tuyo...
El problema es exactamente el mismo, el problema o es de la configuración general del proyecto, por favor si puedes ponme esta pantalla de tu code blocks, a ver si es igual:
En las pestañas 'Linker Settings' y 'Search Directories' no tienes nada, verdad (ninguna ruta) ?
No habrás echo ningun update del SDK ?
En la página oficial hay un fix pero no se para que es...
Buenas
Ahí va mi configuración global (settings/compiler&debugger) y la configuración que tengo en proyecto (siempre partiendo del wizard de gp2x wiz que instala el sdk en el codebloks, y con la instalación del sdk para windows sin tocar nada).
Instalé primero el codeblocks (la versión oficial del 2008-02) y luego instalé el sdk que está en este mismo hilo en descarga desde megaupload (el de gpain iba muy muy lento) no toqué nada, instalar, siguiente siguiente, etc...
Solo tengo configuración en las imágenes que te adjunto. No actualicé nada. De todas formas tengo que probar en el ord. del curro, que tengo una ati en vez de una nvidia, a ver si es por eso (por el opengl que incluyen los drivers de la tarjeta)
En cuanto a las fuentes tft, el 2dtutorial van bien tanto en host como en wiz.
¿Que tal lo ves de velocidad? acabo de revisarlo y puede que me pareciera lento, pero realmente está bien: lo que hago para animarlo es mover en cada frame 1 pixel expandiendo la figura, en 50 posiciones, lo he cambiado a que lo haga crecer en 60 píxeles, con lo que tarda 1 seg. exacto en cada ampliación, y así es, por lo que está bien de velocidad, hay que hacer pruebas de rendimiento a ver de lo que es capaz el DGE usando opengl
Codec off
HtDreams / Proyecto Iris
Lo que me parecio es que ejecutando a traves del menu game (con el ini) que iba más rápido, pero creo que ha sido sólo una impresión, pruebalo haciendo un ini a ver si piensas lo mismo.
Voy a revisar tus pantallas, la verdad tengo todo como el pdf, ya he revisado mil veces las configuraciones, es el problema del opengles que no se implementa en el exe y las dependencias de las fuentes ttf...
Dime si te salen los warnings de OpenGL al compilar.
Muchas grácias, la verdad mucha gente nos visita pero nadie parece importarse... (igual estan como locos para ganar el concurso)
< - >Repasando tus pantallas, primero aclarar que las propiedades del proyecto no son necesarias (estas se guardan en la plantilla, o sea, basta con abrir tu proyecto para tener tu configuración), las necesarias son las globales (estas se guardan en la configuración del codeblocks), porque el problema podria venir de aqui, segun veo, tu tienes un include menos en 'Aditional Paths' y en la primera foto tienes make.exe en lugar de mingw32-make.exe, esto lo tienes mal, porque en esa carpeta no existe make.exe, y en el pdf puedes ver que son 2 includes (rutas).
Tambien probe ponerlo como el tuyo en esta parte y sigue igual....
Estoy quedando como loco, que SO tienes ?
Puedes ver las plantillas (1 foto) 'linker settings' y search directories a ver si tienes alguna ruta en ellas ?
< - >P.S: Mi portatil tiene una NVIDIA.
P.S. 2: Voy a descargar el de megaupload y a comparar las libs, no vaya a ser eso![]()
Última edición por GameMaster; 23/04/2010 a las 02:11 Razón: Edición automática anti doble-post.
Buenas
Linker settings y search directories vacíos (en global compiler settings)
Al compilar tu fuente me salen sólo warnings de los pragma, pero nada de opengl
Tengo Windows XP Prof. con service pack 3, y la versión 08.02 de codeblocks con el sdk de megaupload (imagino que es el mismo porque ocupaban lo mismo al descargar ambos)
En el ord. del curro tengo lo mismo pero con una ati (normalilla de hace unos 4-5 años) y lo he ejecutado desde terminal server y no va (pantallazo amarillo)... igual desde terminal server no envia los overlay de hardware, mañana lo probare in situ...
Codec off
HtDreams / Proyecto Iris
Yo tengo el mismo codeblocks. A ver si te entiendo, los sintomás son iguales a los de mi máquina ? tu exe compilado en la maquina del curro ocupa la mitad como el mio ? Te sale el stderr.txt y se queda al teminar la aplicación ?
Entras en la aplicación, sale como un flash en pantalla e se sale (a veces peta la aplicación) ?
Si es cierto, prueba a ver lo de las fuentes tambien en el curro a ver si te compila en host, para ver si tienes los mismo problemas.
Grácias.
< - >Esto es lo que me sale, no te sale igual ?
Como ves se queda a 652kb, le falta la parte de OpenGL (lib estatica)
Warning: resolving __imp__glVertexPointer by linking to __imp__glVertexPointer@16
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups
Warning: resolving __imp__glEnableClientState by linking to __imp__glEnableClientState@4
Warning: resolving __imp__glColorPointer by linking to __imp__glColorPointer@16
Warning: resolving __imp__glDrawArrays by linking to __imp__glDrawArrays@12
Warning: resolving __imp__glDisableClientState by linking to __imp__glDisableClientState@4
Warning: resolving __imp__glEnable by linking to __imp__glEnable@4
Warning: resolving __imp__glTexParameteri by linking to __imp__glTexParameteri@12
Warning: resolving __imp__glTexCoordPointer by linking to __imp__glTexCoordPointer@16
Warning: resolving __imp__glDisable by linking to __imp__glDisable@4
Output size is 652.00 KB
Process terminated with status 0 (0 minutes, 4 seconds)
0 errors, 9 warnings
EDITO: Bueno, ahora te he entendido mejorveo que sólo has probado tu exe compilado en el curro, pensaba que lo estabas compilando tambien, eso ya proviene de otro problema, puede que te falte opengl en el sistema o algo, lo bueno seria que compilaras en el curro a ver si lo hacia...
Última edición por GameMaster; 23/04/2010 a las 09:45 Razón: Edición automática anti doble-post.
Marcadores