Sorry this line

Finally to get your gl_position = mvp * gl_position; and not the other way.

should read

Finally to get your gl_position = mvp * positionAttributeVariable; and not
the other way.

On Sat, Sep 1, 2012 at 11:10 PM, Satya Komatineni <
satya.komatin...@gmail.com> wrote:

> Guich,
> Given a number of ways how to do the same thing in OpenGL it will be quite
> hard to debug.
>
> On Sat, Sep 1, 2012 at 9:11 AM, guich <guiha...@gmail.com> wrote:
>
>> Hi,
>>
>> I've spent a full day trying to draw a series of points using GL_POINTS.
>> I know i could use a texture, but i want to learn how to draw points. The
>> resulting image (zoomed) is shown here:
>>
>> The code is written below. Any help on why are only 4 points appearing is
>> greatly appreciated. Although it is possible to create your model, view,
>> and projection matrices, it is better to use Matrix class and use the
>> methods available on that class to generate the required matrices.
>>
>
> To get the view matrix you can call
> Matrix.setLookAtM(viewMatrix....)
>
> To get the projection matrix
> Matrix.frustumM(projectionMatrix....)
>
> Then you can get your ModelViewProjection matrix by doing
> Matrix.multiplyMM(mvp, projmatrix, viewmatrix)
>
> Finally to get your gl_position = mvp * gl_position; and not the other way.
>
> I would start with a simple program that works and then gradually increase
> the complexity. A triangle or a square is a good place to start and then
> make it work using the examples in the tutorial on the android developer
> site.
>
> If there is a specific issue that you are not clear ask that specifically
> and you may be able to debug it that way
>
> http://satyakomatineni.com/android/training
> http://satyakomatineni.com
> http://androidbook.com
> http://twitter.com/SatyaKomatineni
>
>
>>
>> <https://lh5.googleusercontent.com/-lelPSZoY4dw/UEIH5mVQfII/AAAAAAAAAD4/o5q5GMFuL00/s1600/points.png>
>>
>> public class MainActivity extends Activity
>> {
>>    class MyGLSurfaceView extends GLSurfaceView
>>    {
>>       public MyGLSurfaceView(Context context)
>>       {
>>          super(context);
>>
>>          setEGLContextClientVersion(2); // Create an OpenGL ES 2.0
>> context.
>>          setEGLConfigChooser(8, 8, 8, 8, 0, 0);
>>          getHolder().setFormat(PixelFormat.RGBA_8888);
>>          setRenderer(new MyGLRenderer()); // Set the Renderer for drawing
>> on the GLSurfaceView
>> //         setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); // Render
>> the view only when there is a change in the drawing data (must be after
>> setRenderer!)
>>       }
>>    }
>>
>>    public void onCreate(Bundle savedInstanceState)
>>    {
>>        super.onCreate(savedInstanceState);
>>        setContentView(new MyGLSurfaceView(this));
>>    }
>> }
>>
>> class MyGLRenderer implements GLSurfaceView.Renderer
>> {
>>    byte[][] bitmap = {
>>          {1,1,1,1,1,1,1,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,0,0,1,1,0,0,1},
>>          {1,1,1,1,1,1,1,1}};
>>
>>    static final int COORDS_PER_VERTEX = 3;
>>
>>    // Set color with red, green, blue and alpha (opacity) values
>>    float color[] = { 0,0,0, 1.0f };
>>    float coords[] = new float[4 * COORDS_PER_VERTEX];
>>    int w,h;
>>
>>    public void onSurfaceCreated(GL10 unused, EGLConfig config)
>>    {
>>    }
>>
>>    public void onDrawFrame(GL10 unused)
>>    {
>>       try
>>       {
>>          drawText();
>>       } catch (Exception e) {debug(e.getMessage());}
>>    }
>>
>>    private String vertexShaderCode(int w, int h)
>>    {
>>       return // http://www.songho.ca/opengl/gl_projectionmatrix.html
>>          "attribute vec4 vPosition;" +
>>          "mat4 projectionMatrix = mat4( 2.0/"+w+".0, 0.0, 0.0, -1.0,"+
>>                               "0.0, -2.0/"+h+".0, 0.0, 1.0,"+
>>                               "0.0, 0.0, -1.0, 0.0,"+
>>                               "0.0, 0.0, 0.0, 1.0);"+
>>          "void main() {gl_Position = vPosition*projectionMatrix;}"; //
>> the matrix must be included as a modifier of gl_Position
>>    }
>>
>>    private final String fragmentShaderCode =
>>       "precision mediump float;" +
>>       "uniform vec4 vColor;" +
>>       "void main() {gl_FragColor = vColor;}";
>>
>>    private int mProgram;
>>    private int mPositionHandle;
>>    private int mColorHandle;
>>
>>    public void onSurfaceChanged(GL10 unused, int width, int height)
>>    {
>>       w = width; h = height;
>>       // Adjust the viewport based on geometry changes, such as screen
>> rotation
>>       GLES20.glViewport(0, 0, width, height);
>>
>>       // prepare shaders and OpenGL program
>>       int vertexShader =
>> MyGLRenderer.loadShader(GLES20.GL_VERTEX_SHADER,vertexShaderCode(width,height));
>>       int fragmentShader =
>> MyGLRenderer.loadShader(GLES20.GL_FRAGMENT_SHADER,fragmentShaderCode);
>>
>>       mProgram = GLES20.glCreateProgram();             // create empty
>> OpenGL Program
>>       GLES20.glAttachShader(mProgram, vertexShader);   // add the vertex
>> shader to program
>>       GLES20.glAttachShader(mProgram, fragmentShader); // add the
>> fragment shader to program
>>       GLES20.glLinkProgram(mProgram);                  // create OpenGL
>> program executables
>>       GLES20.glUseProgram(mProgram); // Add program to OpenGL environment
>>
>>       // get handle to fragment shader's vColor member
>>       mColorHandle = GLES20.glGetUniformLocation(mProgram, "vColor");
>>       mPositionHandle = GLES20.glGetAttribLocation(mProgram,
>> "vPosition"); // get handle to vertex shader's vPosition member
>>       GLES20.glEnableVertexAttribArray(mPositionHandle); // Enable a
>> handle to the vertices - since this is the only one used, keep it enabled
>> all the time
>>    }
>>
>>    float[] letter; int nletter;
>>    private FloatBuffer letBuffer;
>>    private void drawText()
>>    {
>>       setColor(0xFF00FFFF);
>>       if (letter == null)
>>       {
>>          letter = new float[200];
>>          for (int i = 0; i < bitmap.length; i++)
>>          {
>>             byte[]b = bitmap[i];
>>             for (int j = 0; j < b.length; j++)
>>                if (b[j] == 1)
>>                {
>>                   letter[nletter++] = j;
>>                   letter[nletter++] = i;
>>                   nletter++;
>>                }
>>          }
>>          ByteBuffer bb = ByteBuffer.allocateDirect(nletter * 4); // (# of
>> coordinate values * 4 bytes per float)
>>          bb.order(ByteOrder.nativeOrder());
>>          letBuffer = bb.asFloatBuffer();
>>          letBuffer.put(letter,0,nletter); letBuffer.position(0);
>>       }
>>
>>          int nn = nletter/3;
>>          GLES20.glVertexAttribPointer(mPositionHandle, COORDS_PER_VERTEX,
>> GLES20.GL_FLOAT,
>>                false, COORDS_PER_VERTEX * nn, letBuffer);
>>          GLES20.glDrawArrays(GLES20.GL_POINTS, 0,nn);
>>    }
>>
>>    public static int loadShader(int type, String shaderCode)
>>    {
>>       int shader = GLES20.glCreateShader(type);
>>       GLES20.glShaderSource(shader, shaderCode);
>>       GLES20.glCompileShader(shader);
>>       return shader;
>>    }
>>
>>    public void setColor(int rgb)
>>    {
>>       color[0] = (float)((rgb >> 16 ) & 0xFF) / 255f;
>>       color[1] = (float)((rgb >> 8  ) & 0xFF) / 255f;
>>       color[2] = (float)((rgb       ) & 0xFF) / 255f;
>>       color[3] = (float)((rgb >>> 24) & 0xFF) / 255f;
>>       GLES20.glUniform4fv(mColorHandle, 1, color, 0); // Set color for
>> drawing the line
>>    }
>> }
>>
>> thanks,
>>
>>     guich
>>
>>
>>
>> <https://lh5.googleusercontent.com/-lelPSZoY4dw/UEIH5mVQfII/AAAAAAAAAD4/o5q5GMFuL00/s1600/points.png>
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to android-developers@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-developers+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>
>
>
>
>
>


-- 
http://satyakomatineni.com/android/training
http://satyakomatineni.com
http://androidbook.com
http://twitter.com/SatyaKomatineni

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to