`
lanhuidong
  • 浏览: 227651 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

OpenGL学习4

 
阅读更多

绘制一个3D的三棱锥

 

1.代码

package com.lanhuidong.opengl;

import java.nio.FloatBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import com.lanhuidong.opengl.util.BufferToNativeOrder;

import android.opengl.GLSurfaceView.Renderer;

public class OpenGL3DRender implements Renderer {

    private float unit = 0.5f;
    private float sqrt = (float) Math.sqrt(3);
    private float[] triArray = new float[] {
            0, unit, 0,
            -unit, 0, unit/sqrt, 
            unit, 0, unit/sqrt,

            0, unit, 0, 
            unit, 0, unit/sqrt,
            0, 0, -unit*2*sqrt/3,
            
            0, unit, 0,
            0, 0, -unit*2*sqrt/3,
            -unit, 0, unit/sqrt,
            
            -unit, 0, unit/sqrt,
            unit, 0, unit/sqrt,
            0, 0, -unit*2*sqrt/3
        };
    
    private float colorUnit = 1f;
    private float[] triColor = new float[]{
            colorUnit, 0, 0, colorUnit,
            0, colorUnit, 0, colorUnit,
            0, colorUnit, colorUnit, colorUnit,
            
            colorUnit, 0, 0, colorUnit,
            0, colorUnit, colorUnit, colorUnit,
            colorUnit, 0, colorUnit, colorUnit,
            
            colorUnit, 0, 0, colorUnit,
            0, colorUnit, 0, colorUnit,
            colorUnit, 0, colorUnit, colorUnit,
            
            0, colorUnit, 0, colorUnit,
            0, colorUnit, colorUnit, colorUnit,
            colorUnit, 0, colorUnit, colorUnit
    };
    
    private float triangle = 0f;

    @Override
    public void onDrawFrame(GL10 gl) {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        gl.glLoadIdentity();
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
        FloatBuffer floatBuffer = BufferToNativeOrder.getNativeOrderFloatBuffer(triArray);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, floatBuffer);
        gl.glColorPointer(4, GL10.GL_FLOAT, 0, BufferToNativeOrder.getNativeOrderFloatBuffer(triColor));
        gl.glRotatef(triangle, 0, 1, 0);
        triangle += 1f;
        for(int i = 0; i < 4; i++){
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i * 3, 3);
        }
        gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        gl.glViewport(0, 0, width, height);

        float ratio = (float) width / height;
        gl.glMatrixMode(GL10.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
    }

    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        gl.glClearColor(0, 0, 1.0f, 0.5f);
    }

}

 

2.效果



 

  • 大小: 15.5 KB
分享到:
评论

相关推荐

    openGL学习

    ### OpenGL学习知识点详解 #### 一、OpenGl简介与预备知识 **1.1 引言** 本教程旨在为读者提供一个系统性学习OpenGl的平台。OpenGl是一种跨语言、跨平台的应用程序接口(API),用于渲染二维、三维矢量图形。它是...

    Qt Opengl学习绝好资料

    标题“Qt Opengl学习绝好资料”说明这是一份优秀的学习资源,它旨在指导读者如何在Qt环境中使用OpenGL进行图形绘制。标题中提到的“学习”和“资料”暗示了本资源的教育性质,它更侧重于入门和基础知识的传递。描述...

    OpenGL 学习资料大全

    收集到的OpenGL学习资料,内容包括: 1.OpenGL着色语言.rar 2.NEHE教程.pdf 3.openglapi.CHM 4.opengl编程与实例.pdf 5.openGL图像系统详解(英).pdf 6.vc下OpenGL开发框架与应用.pdf 7.北大 openGL 课程.pdf

    opengl 学习 网站

    1. **OpenGL官方文档** (opengl.org/developers/documentation):这是所有OpenGL学习者的基础起点。官方网站提供了完整的OpenGL规范、参考手册和API文档,详细介绍了各个函数、枚举和常量的作用。同时,这里也有...

    opengl类学习文件

    在这个"opengl类学习文件"中,包含了多个关键元素,可以帮助你深入理解并掌握OpenGL编程。 首先,"gltools"可能是一个包含GLUT(OpenGL Utility Toolkit)和其他辅助工具的库,它为OpenGL程序员提供了基本的窗口...

    OpenGL.rar_OpenGL pdf_OpenGL 参考手册_opengl_opengl 参考_中英文

    4. **状态机**:OpenGL的状态机管理着各种图形属性,如颜色、深度测试、混合模式等。开发者可以通过调用函数来改变这些状态。 5. **缓冲区**:OpenGL使用各种缓冲区来存储数据,如顶点缓冲区、索引缓冲区和帧缓冲区...

    OpenGL编程入门学习

    4. **Windows下的OpenGL编程环境搭建**:推荐使用Visual Studio 2005作为开发环境,并需要安装GLUT工具包以方便学习。GLUT提供了一些基本的窗口管理和输入输出功能,简化了程序初始化的复杂度。 5. **GLUT的安装**...

    OpenGL学习必备,红宝书及蓝宝书

    "红宝书"通常指的是"OpenGL编程指南",而"蓝宝书"则是"OpenGL超级宝典",这两本书是OpenGL学习者的重要参考资料。 红宝书,全名《OpenGL编程指南》(The OpenGL Programming Guide),由OpenGL Architecture Review...

    OpenGL ES学习资料

    学习OpenGL ES的资料有很多,比如在提供的内容中提到了“Learning OpenGL ES for iOS”,这是一本专注于iOS平台上使用OpenGL ES进行3D图形编程的书籍。 Addison-Wesley Learning Series是计算机科学领域的一系列...

    android OpenGL学习笔记(一)

    在本篇“Android OpenGL 学习笔记(一)”中,我们将探讨如何在Android平台上使用OpenGL ES进行图形渲染。OpenGL ES是OpenGL的一个轻量级版本,专为嵌入式系统设计,包括移动设备如智能手机和平板电脑。这篇笔记将...

    QT OPENGL学习

    QT OpenGL学习是一个面向初学者和有一定基础的开发者的学习资源,主要关注如何在QT4框架下有效地使用OpenGL进行图形渲染和交互。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形,而QT则是一个强大的...

    OpenGL学习资料文档.rar

    本资源集合包含了一套完整的OpenGL学习资料,适合初学者入门。 首先,"OpenGL编程指南第七版"是学习OpenGL的基础书籍,它深入浅出地介绍了OpenGL的工作原理和基本概念,包括上下文创建、窗口系统集成、绘图函数、...

    OpenGL经典学习书籍

    其次,《OpenGL编程指南》第七版,也被称为“红宝书”,是OpenGL学习的经典之作。这本书全面介绍了OpenGL 4.x版本,包括新的核心模式、固定功能管道的移除、向量和矩阵运算、着色语言GLSL、纹理、帧缓冲对象、几何...

    openGL 学习手册

    openGL 学习手册 自己从网上总结的 希望对大家有用

    opengl 入门学习资料整理

    OpenGL 入门学习资料整理 OpenGL 作为当前主流的图形 API 之一,它在一些场合具有比 DirectX 更优越的特性。本文主要介绍了入门的基础知识。 一、OpenGL 的优点 1. 与 C 语言紧密结合 OpenGL 命令最初就是用 C ...

    OpenGL学习资料

    OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、...

    OPENGL学习 3D小雪人

    这个“OPENGL学习 3D小雪人”资源是为初学者设计的,旨在帮助他们理解并掌握OpenGL的基础知识,通过创建一个3D小雪人的实例来实践。 3D小雪人的实现涉及多个OpenGL的关键概念和技术: 1. **窗口系统绑定**:在...

    OpenGL学习内容以及参考书籍和网站-2008.

    ### OpenGL学习内容以及参考书籍和网站-2008 #### 一、OpenGL背景与历史 OpenGL(Open Graphics Library)是一种跨平台的应用程序接口(API),用于渲染2D和3D矢量图形。它最初由Silicon Graphics Inc. (SGI) 开发...

    学习笔记OpenGL:VisualStudio2022配置OpenGL环境

    学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:...

Global site tag (gtag.js) - Google Analytics