OpenGL ES 纹理上画点,该如何解决

OpenGL ES 纹理上画点
我尝试在一张全屏的背景纹理上画N个红点,点上但是整个背景图都会被渲染成红色。求高手指点啊,弄了好久都没解决!!!
Java code


//绑定背景纹理,绘制背景纹理,代码略。。。。


//开始绘制红点
//gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
Dot myDot = new Dot();
myDot.draw(gl);

class Dot{
    private FloatBuffer vertexBuffer;
    //点的坐标(x, y, z);
    private float vertices[] = {
            100.0f,100.0f,0,
            200.0f,200.0f,0,
            300.0f,300.0f,0,
            400.0f,400.0f,0
    };
    //准备顶点数据
    private void init(){
        ByteBuffer vertexByteBuffer = ByteBuffer.allocateDirect(vertices.length * 4);
        vertexByteBuffer.order(ByteOrder.nativeOrder());
        vertexBuffer = vertexByteBuffer.asFloatBuffer();
        vertexBuffer.put(vertices);
        
        vertexBuffer.position(0);
    }
    public Dot(){
        init();
    }
    public void draw(GL10 gl){
        //开始数组功能 GL_VERTEX_ARRAY
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        //设定颜色值 此处为红  (red, green, blue, alpha)~[0.0f-1.0f]
        gl.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
        // 指向数组数据
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
        //设置点的大小 为 5 像素
        gl.glPointSize(5);
        // 绘制点  GL_POINTS ; vertices.length/3 点的个数
        gl.glDrawArrays(GL10.GL_POINTS, 0, vertices.length / 3);
        //关闭数组功能 GL_VERTEX_ARRAY
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    }
}

 
 

------解决方案--------------------
查了下,应该是这样

gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();


点坐标取-1到1.意思是说
0,0点在中心 -1,-1是 左上角。
上面这个是d3d的坐标系,ogl不一定一样,你可以自己试试看,画几个点就知道了。


ogl我不熟,不过原理上都一样的。