Jump to content

  • Log In with Google      Sign In   
  • Create Account

Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics

#Actualprogman_rus

Posted 04 May 2012 - 09:19 AM

I have the vertex structure
struct Vertex
{
GLfloat x, y;
GLfloat r, g, b, a;
GLfloat tu, tv;
};

#define VERTEX_ARRAY 0
#define VERTEXCOLOR_ARRAY 1
#define TEXCOORD_ARRAY 2


I use it for draw 2D primitives.
test platform - Samsung Galaxy Tab

today I lunch app on the Sumsung Galaxy S II
I am in shock - there x/y is texture coord and tu/tv is world coordinats. They are reversed!!!

this is my shader

attribute vec4 vPosition;
attribute mediump vec4 vColor;
attribute mediump vec2 uv;
varying mediump vec4 vVertexColor;
varying mediump vec2 myTexCoord;
void main()
{
  gl_Position  = vPosition;
  vVertexColor  = vColor;
  myTexCoord   = uv;
}
precision mediump float;
uniform sampler2D sampler2d;
varying mediump vec4 vVertexColor;
varying mediump vec2 myTexCoord;
void main()
{
   gl_FragColor = texture2D( sampler2d, myTexCoord) * vVertexColor ;
}


this is render function for draw all primitives

glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer );// Bind the VBO.
glBufferSubData( GL_ARRAY_BUFFER, 0, m_CurrentVertexIndex * g_ui32VertexStride, vertices );

glEnableVertexAttribArray( VERTEX_ARRAY );
glVertexAttribPointer( VERTEX_ARRAY, 2, GL_FLOAT, GL_FALSE, g_ui32VertexStride, 0 );

glEnableVertexAttribArray( VERTEXCOLOR_ARRAY );
glVertexAttribPointer( VERTEXCOLOR_ARRAY, 4, GL_FLOAT, GL_FALSE, g_ui32VertexStride, (void*) (2 * sizeof(GLfloat) ) );

glEnableVertexAttribArray( TEXCOORD_ARRAY );
glVertexAttribPointer( TEXCOORD_ARRAY, 2, GL_FLOAT, GL_FALSE, g_ui32VertexStride, (void*) (6 * sizeof(GLfloat) ) );

glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, indexBuffer );
glDrawElements( GL_TRIANGLES, 3 * m_RenderTriangleCount, GL_UNSIGNED_SHORT, (void*)0);

How to fix it? How to setup for GL that first is world coord, next is color and next is texture coord?

#2progman_rus

Posted 04 May 2012 - 09:14 AM

I have the vertex structure
struct Vertex
{
GLfloat x, y;
GLfloat r, g, b, a;
GLfloat tu, tv;
};

#define VERTEX_ARRAY 0
#define VERTEXCOLOR_ARRAY 1
#define TEXCOORD_ARRAY 2


I use it for draw 2D primitives.
test platform - Samsung Galaxy Tab

today I lunch app on the Sumsung Galaxy S II
I am in shock - there x/y is texture coord and tu/tv is world coordinats. They are reversed!!!

this is my shader

attribute vec4 vPosition;
attribute mediump vec4 vColor;
attribute mediump vec2 uv;
varying mediump vec4 vVertexColor;
varying mediump vec2 myTexCoord;
void main()
{
  gl_Position  = vPosition;
  vVertexColor  = vColor;
  myTexCoord   = uv;
}
precision mediump float;
uniform sampler2D sampler2d;
varying mediump vec4 vVertexColor;
varying mediump vec2 myTexCoord;
void main()
{
   gl_FragColor = texture2D( sampler2d, myTexCoord) * vVertexColor ;
}


this is render function for draw all primitives

glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer );// Bind the VBO.
glBufferSubData( GL_ARRAY_BUFFER, 0, m_CurrentVertexIndex * g_ui32VertexStride, vertices );

glEnableVertexAttribArray( VERTEX_ARRAY );
glVertexAttribPointer( VERTEX_ARRAY, 2, GL_FLOAT, GL_FALSE, g_ui32VertexStride, 0 );

glEnableVertexAttribArray( VERTEXCOLOR_ARRAY );
glVertexAttribPointer( VERTEXCOLOR_ARRAY, 4, GL_FLOAT, GL_FALSE, g_ui32VertexStride, (void*) (2 * sizeof(GLfloat) ) );

glEnableVertexAttribArray( TEXCOORD_ARRAY );
glVertexAttribPointer( TEXCOORD_ARRAY, 2, GL_FLOAT, GL_FALSE, g_ui32VertexStride, (void*) (6 * sizeof(GLfloat) ) );

glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, indexBuffer );
glDrawElements( GL_TRIANGLES, 3 * m_RenderTriangleCount, GL_UNSIGNED_SHORT, (void*)0);

How to fix it? How to setup for GL that first is world coord, next is color and next is texture coord?

#1progman_rus

Posted 04 May 2012 - 09:11 AM

I have the vertex structure
struct Vertex
{
GLfloat x, y;
GLfloat r, g, b, a;
GLfloat tu, tv;
};

#define VERTEX_ARRAY 0
#define VERTEXCOLOR_ARRAY 1
#define TEXCOORD_ARRAY 2


I use it for draw 2D primitives.
test platform - Samsung Galaxy Tab

today I lunch app on the Sumsung Galaxy S II
I am in shock - there x/y is texture coord and tu/tv is world coordinats

thisis my shader

attribute vec4 vPosition;
attribute mediump vec4 vColor;
attribute mediump vec2 uv;
varying mediump vec4 vVertexColor;
varying mediump vec2 myTexCoord;
void main()
{
  gl_Position  = vPosition;
  vVertexColor  = vColor;
  myTexCoord   = uv;
}
precision mediump float;
uniform sampler2D sampler2d;
varying mediump vec4 vVertexColor;
varying mediump vec2 myTexCoord;
void main()
{
   gl_FragColor = texture2D( sampler2d, myTexCoord) * vVertexColor ;
}


this is render function for draw all primitives

glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer );// Bind the VBO.
glBufferSubData( GL_ARRAY_BUFFER, 0, m_CurrentVertexIndex * g_ui32VertexStride, vertices );

glEnableVertexAttribArray( VERTEX_ARRAY );
glVertexAttribPointer( VERTEX_ARRAY, 2, GL_FLOAT, GL_FALSE, g_ui32VertexStride, 0 );

glEnableVertexAttribArray( VERTEXCOLOR_ARRAY );
glVertexAttribPointer( VERTEXCOLOR_ARRAY, 4, GL_FLOAT, GL_FALSE, g_ui32VertexStride, (void*) (2 * sizeof(GLfloat) ) );

glEnableVertexAttribArray( TEXCOORD_ARRAY );
glVertexAttribPointer( TEXCOORD_ARRAY, 2, GL_FLOAT, GL_FALSE, g_ui32VertexStride, (void*) (6 * sizeof(GLfloat) ) );

glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, indexBuffer );
glDrawElements( GL_TRIANGLES, 3 * m_RenderTriangleCount, GL_UNSIGNED_SHORT, (void*)0);

How to fix it? How to setup for GL that first is world coord, next is color and next is texture coord?

PARTNERS