• Advertisement

W.k Seah

Member
  • Content count

    8
  • Joined

  • Last visited

Community Reputation

120 Neutral

About W.k Seah

  • Rank
    Newbie
  1. Yea.. Just trying something out and see if things turn out more opac but it didn't
  2. Hello.. I am new to OpenGLES and my question is how do I render multiple transparent object? I am drawing things in 2D using xy-plane. The problem that I am facing is the more object I render, the less opacity it have. Here's my openGLES set up:   // Enable texture mapping.     glEnable(GL_TEXTURE_2D);     // Enable smooth shading.     glShadeModel(GL_SMOOTH);     // Set the depth value used when clearing the depth buffer.     glClearDepthf(1.0f);     // Enable Blend.     glEnable(GL_BLEND);     // Set the type of depth test.     //glDepthFunc(GL_LEQUAL);     // Use the best perspective correction method.     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); Here's my draw call assuming all texture have full opacity: GLuint tex = GraMgr.RetrieveTexture(R_BOX_TEXTURE); // Array used for object coordinates. GLfloat vcoords[4][3]; // Array used for texture coordinates. GLfloat tcoords[4][2]; // Array used to convert from QUAD to TRIANGLE_STRIP. // QUAD is not available on the OpenGL implementation // we are using. GLubyte indices[4] = {0, 1, 3, 2}; // Set the background color to be used when clearing the screen. glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Clear the screen and the depth buffer. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Use the model matrix. glMatrixMode(GL_MODELVIEW); // Reset the model matrix. glLoadIdentity(); // Move into the screen 5 units. glTranslatef(0.0f, 0.0f, -5.0f); // Specify rotation along the X, Y, and Z axes. glRotatef(0, 1.0f, 0.0f, 0.0f); glRotatef(0, 0.0f, 1.0f, 0.0f); glRotatef(0, 0.0f, 0.0f, 1.0f); // Select the texture to use when rendering the box. glBindTexture(GL_TEXTURE_2D, tex); glColor4f(0.5f, 0.5f, 1.0f, 2.0f); glBlendFunc(GL_SRC_ALPHA, GL_ONE); // Set pointers to vertex coordinates and texture coordinates. glVertexPointer(3, GL_FLOAT, 0, vcoords); glTexCoordPointer(2, GL_FLOAT, 0, tcoords); // Enable vertex and texture coord arrays. glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); float scaleX = 2.0f; float scaleY = 0.5f; // Define the front face of the box. tcoords[0][0] = 1.0f; tcoords[0][1] = 0.0f; vcoords[0][0] = -0.5f * scaleX; vcoords[0][1] = -0.5f; vcoords[0][2] = 1.0f; tcoords[1][0] = 0.0f; tcoords[1][1] = 0.0f; vcoords[1][0] = 0.5f * scaleX; vcoords[1][1] = -0.5f; vcoords[1][2] = 1.0f; tcoords[2][0] = 0.0f; tcoords[2][1] = 1.0f; vcoords[2][0] = 0.5f * scaleX; vcoords[2][1] = 0.5f; vcoords[2][2] = 1.0f; tcoords[3][0] = 1.0f; tcoords[3][1] = 1.0f; vcoords[3][0] = -0.5f * scaleX; vcoords[3][1] = 0.5f; vcoords[3][2] = 1.0f; // This draws one textured plane using a strip of two triangles. glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, indices); // Disable texture and vertex arrays. glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); // Reset the model matrix. glLoadIdentity(); // Move into the screen 5 units. glTranslatef(1.0f, 1.0f, -5.0f); // Specify rotation along the X, Y, and Z axes. glRotatef(0, 1.0f, 0.0f, 0.0f); glRotatef(0, 0.0f, 1.0f, 0.0f); glRotatef(WKMath::PI / 4.0f * 180.0f, 0.0f, 0.0f, 1.0f); // Select the texture to use when rendering the box. glBindTexture(GL_TEXTURE_2D, tex); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glBlendFunc(GL_SRC_ALPHA, GL_ONE); // Set pointers to vertex coordinates and texture coordinates. glVertexPointer(3, GL_FLOAT, 0, vcoords); glTexCoordPointer(2, GL_FLOAT, 0, tcoords); // Enable vertex and texture coord arrays. glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Define the front face of the box. tcoords[0][0] = 1.0f; tcoords[0][1] = 0.0f; vcoords[0][0] = -0.5f; vcoords[0][1] = -0.5f; vcoords[0][2] = 1.0f; tcoords[1][0] = 0.0f; tcoords[1][1] = 0.0f; vcoords[1][0] = 0.5f; vcoords[1][1] = -0.5f; vcoords[1][2] = 1.0f; tcoords[2][0] = 0.0f; tcoords[2][1] = 1.0f; vcoords[2][0] = 0.5f; vcoords[2][1] = 0.5f; vcoords[2][2] = 1.0f; tcoords[3][0] = 1.0f; tcoords[3][1] = 1.0f; vcoords[3][0] = -0.5f; vcoords[3][1] = 0.5f; vcoords[3][2] = 1.0f; // This draws one textured plane using a strip of two triangles. glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, indices); // Disable texture and vertex arrays. glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); // Wait (blocks) until all GL drawing commands to finish. glFinish();  
  3. Direct3D9 Font

    Not easy to implement it in my game, especially when the graphics pipeline not coded by me.
  4. Direct3D9 Font

    Thanks, I will research on that.
  5. Direct3D9 Font

    Is there a way to draw he text behind DirectX meshes? I am using D3DXCreateFont() I hope I do not need to create my own Bitmap Font in this one.
  6. Sorry my bad. When I saw the word Luminance, I thought there's some relation in lighting. Now this sentence make me even more confuse. "Rendering can be thought as an indirect write access."
  7. I am not using lighting... I need the stencil buffer for minimap.
  8. I heard I can specify the stencil mask using a black and white image file. How do I do that and how do I specify the area of maksing?
  • Advertisement