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 - Argail

#1
Vale, tomo nota de todo, muchas gracias por la ayuda!  :D
#2
Vale, corroborado:
Citar
Warning:

When blending is enabled, sort your draw calls from furthest to nearest, and disable depth testing.

Es decir, si se quiere usar blending, a tomar viento el depth buffer. Lo que yo no me esperaba es el resultado  :-X
#3
Flipando estoy...
pintando sin blend, la textura al lado de la otra y desactivando el depth_test como me dijiste me las pilla bien. ¿Y que hago yo ahora? xDDDD
#4
Muy buenas a todos,
supongo que cuando aparezca me tiraré de los pelos, pero nose que puedo estar haciendo mal para que cuando intento pintar varios planos con distintas texturas, me los haga ambos con la misma textura, que resulta que es la última que he cargado. Me huele a que estoy machacando o no haciendo bien algo, pero no caigo en que puede ser...

Ya se que a veces jode el rollo de que te planten el código en plan "buscame el error", pero lo hago más para que tengais una idea de como cargo las cosas, los tipos, y tal, en realidad mi rallada es porque "glBindTexture" no me está haciendo lo que le pido. (Porsupuesto, he comprobado que los IDs de las texturas una vez los creo son distintos)

Os explico un poco (lo sé, los nombres de las variables son feísimos, llevo tanto atascado con esto que los habré cambiado bastantes veces)

En archivo de cabecera:

private:
static const GLfloat backgroundPlane[];
GLuint m_BackgroundTexture;

static const GLfloat ButtonPlane[];
GLuint m_ButtonTexture;
float m_fRotateAngle;

static const GLfloat fadePlane[];
float m_fAlpha;


y en la implementacion que nos acontece:
void MainMenuScreen::initialize()
{
glEnable(GL_TEXTURE_2D);

loadTexture("/Res/Background/background.png", m_BackgroundTexture);
loadTexture("/Res/GUI/logo.png", m_ButtonTexture);
}

void MainMenuScreen::loadTexture(const Osp::Base::String& sPath, GLuint& iTexture)
{
Osp::Media::Image* image = new Osp::Media::Image();
image->Construct();
Osp::Graphics::Bitmap* l_pBitmap = image->DecodeN(sPath,
Osp::Graphics::BITMAP_PIXEL_FORMAT_R8G8B8A8);
delete image;

int iWidth = l_pBitmap->GetWidth();
int iHeight = l_pBitmap->GetHeight();
updateTextureSize(iWidth, iHeight);
l_pBitmap->Scale(Osp::Graphics::Dimension(iWidth, iHeight));
Osp::Graphics::BufferInfo buffer;

l_pBitmap->Lock(buffer);
glGenTextures(1, &iTexture);
glBindTexture(GL_TEXTURE_2D, iTexture);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, l_pBitmap->GetWidth(),
l_pBitmap->GetHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE,
buffer.pPixels);

l_pBitmap->Unlock();

AppLog("Texture ID (%i) created", iTexture);
}

void MainMenuScreen::updateTextureSize(int& iWidth, int& iHeight)
{
    int i;
bool bSizeToFit = false;

if ((iWidth != 1) && (iWidth & (iWidth - 1))) {
i = 1;
while ((bSizeToFit ? 2 * i : i) < iWidth)
i *= 2;
iWidth = i;
}

if ((iHeight != 1) && (iHeight & (iHeight - 1))) {
i = 1;
while ((bSizeToFit ? 2 * i : i) < iHeight)
i *= 2;
iHeight = i;
}
}

void MainMenuScreen::update()
{
m_fRotateAngle += 5.0f;
if (m_fRotateAngle > 360.0f)
m_fRotateAngle -= 360.0f;

m_fAlpha += 0.01f;
if (m_fAlpha >= 1.0f)
{
m_fAlpha = 0.0f;
//m_pScreenManager->getInstance()->m_eCurrentScreen = ScreenManager::MAINMENU;
}
}

void MainMenuScreen::draw()
{
GLfloat angle = m_fRotateAngle; // change the rotation angle.
GLfloat alpha = m_fAlpha;

static const GLfloat textureCoord[] = { 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f,
                           1.0f, 0.0f };

glPushMatrix();
glBindTexture(GL_TEXTURE_2D, m_BackgroundTexture);
glEnableClientState( GL_VERTEX_ARRAY);
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glVertexPointer(3, GL_FLOAT, 0, backgroundPlane);
glTexCoordPointer(2, GL_FLOAT, 0, textureCoord);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
glPopMatrix();

glPushMatrix();
glRotatef(-angle, 0.0f, 0.0f, 1.0f);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, m_ButtonTexture);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, ButtonPlane);
glTexCoordPointer(2, GL_FLOAT, 0, textureCoord);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_BLEND);
glPopMatrix();

glPushMatrix();
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState( GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, fadePlane);
glColor4f(0.0f, 0.0f, 0.0f, alpha);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisable(GL_BLEND);
glPopMatrix();
}


¿Alguien sabe que puedo estar haciendo mal para que los planos de background y button me los renderice con la misma textura?

Para los curiosos, el codigo no OpenGL es del SDK de Bada... (maldita la hora...)

#5
Industria y mercado / Asociación de Desarrolladores
29 de Junio de 2006, 11:18:40 PM
Yo personalmente creo que para que sea una verdadera asociación de desarrolladores, debería ser una institución (¡ala que bruto! XD) que ayude a promover el desarrollo de software (o algo mas específico), organice eventos, defienda a los que representa (patentes, etc...), sea una vía de contacto con el mundo laboral y de asesoramiento, dar a conocer a sus integrantes y los proyectos en los que trabajan, etc... Evidentemente esto implica que haya detrás un equipo de gente dedicando su tiempo, lo veo algo complicado para empezar, quizás seria interesante que la asociación fuese tomando responsabilidades poco a poco, conforme madure. En España, por ejemplo, se echa un poco en falta esto para los desarrolladores de videojuegos (por nombrar a un grupo específico), que están bastante abandonados y tienen que buscarse la vida.

Lo que proponíais creo yo que era, más bien, un "directorio" de desarrolladores, una asociación debe ser mucho más activa. ¡Ojo! que no digo que me parezca mal la idea de la web, todo lo contrario (de echo creo recordar en en la nueva stratos van a incorporar algo de eso), es una buena forma de conocer mas el panorama y ayudar a la gente a dar a conocer su trabajo, un buen comienzo :wink:.
#6
General / Nueva Versión De La Web General De Stratos
30 de Marzo de 2006, 12:46:15 PM
 Creo recordar que alguien comento hace tiempo que seria interesante que los usuarios pudiesen tener su CV con un pequeño portafolio en stratos, para que sea mas accesible de cara a posibles salidas laborales. Según el punto de vista que se esta tomando, quizás (y esto es solo una idea) seria interesante que, una vez que un usuario se convierta en avanzado, tenga posibilidad de crear/subir su CV.

En lo que respecta a ascender a usuario avanzado, quizás fuese más seguro que se hiciese mediante una proposición de un avanzado y una votación de x avanzados. (No, no es un consejo de guerra  :lol:, es solo por mantener cierto "nivel")

Ánimo, que tiene muy buena pinta to!  ;) .
#7
General Programadores / Tutorial De Directx
16 de Marzo de 2006, 01:53:40 PM
 Pues yo no es que tenga mucha experiencia, pero te puedo aconsejar varias series de tutoriales que son muy interesantes y que a mi personalmente me estan convenciendo:

Tutoriales Chad's Homepage DX y MDX
Tutoriales MDX

Ambas páginas son en inglés pero son casi todo tecnicismos así que no es muy complicado si no sabes mucho; a ver si te van bien. Taluego





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.