绘制一个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简介与预备知识 **1.1 引言** 本教程旨在为读者提供一个系统性学习OpenGl的平台。OpenGl是一种跨语言、跨平台的应用程序接口(API),用于渲染二维、三维矢量图形。它是...
标题“Qt Opengl学习绝好资料”说明这是一份优秀的学习资源,它旨在指导读者如何在Qt环境中使用OpenGL进行图形绘制。标题中提到的“学习”和“资料”暗示了本资源的教育性质,它更侧重于入门和基础知识的传递。描述...
收集到的OpenGL学习资料,内容包括: 1.OpenGL着色语言.rar 2.NEHE教程.pdf 3.openglapi.CHM 4.opengl编程与实例.pdf 5.openGL图像系统详解(英).pdf 6.vc下OpenGL开发框架与应用.pdf 7.北大 openGL 课程.pdf
1. **OpenGL官方文档** (opengl.org/developers/documentation):这是所有OpenGL学习者的基础起点。官方网站提供了完整的OpenGL规范、参考手册和API文档,详细介绍了各个函数、枚举和常量的作用。同时,这里也有...
在这个"opengl类学习文件"中,包含了多个关键元素,可以帮助你深入理解并掌握OpenGL编程。 首先,"gltools"可能是一个包含GLUT(OpenGL Utility Toolkit)和其他辅助工具的库,它为OpenGL程序员提供了基本的窗口...
1. 与 C 语言紧密结合:OpenGL 命令最初就是用 C 语言函数来进行描述的,对于学习过 C 语言的人来讲,OpenGL 是容易理解和学习的。 2. 强大的可移植性:OpenGL 不仅用于 Windows,还可以用于 Unix/Linux 等其它系统...
4. **状态机**:OpenGL的状态机管理着各种图形属性,如颜色、深度测试、混合模式等。开发者可以通过调用函数来改变这些状态。 5. **缓冲区**:OpenGL使用各种缓冲区来存储数据,如顶点缓冲区、索引缓冲区和帧缓冲区...
4. **Windows下的OpenGL编程环境搭建**:推荐使用Visual Studio 2005作为开发环境,并需要安装GLUT工具包以方便学习。GLUT提供了一些基本的窗口管理和输入输出功能,简化了程序初始化的复杂度。 5. **GLUT的安装**...
"红宝书"通常指的是"OpenGL编程指南",而"蓝宝书"则是"OpenGL超级宝典",这两本书是OpenGL学习者的重要参考资料。 红宝书,全名《OpenGL编程指南》(The OpenGL Programming Guide),由OpenGL Architecture Review...
学习OpenGL ES的资料有很多,比如在提供的内容中提到了“Learning OpenGL ES for iOS”,这是一本专注于iOS平台上使用OpenGL ES进行3D图形编程的书籍。 Addison-Wesley Learning Series是计算机科学领域的一系列...
在本篇“Android OpenGL 学习笔记(一)”中,我们将探讨如何在Android平台上使用OpenGL ES进行图形渲染。OpenGL ES是OpenGL的一个轻量级版本,专为嵌入式系统设计,包括移动设备如智能手机和平板电脑。这篇笔记将...
QT OpenGL学习是一个面向初学者和有一定基础的开发者的学习资源,主要关注如何在QT4框架下有效地使用OpenGL进行图形渲染和交互。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形,而QT则是一个强大的...
本资源集合包含了一套完整的OpenGL学习资料,适合初学者入门。 首先,"OpenGL编程指南第七版"是学习OpenGL的基础书籍,它深入浅出地介绍了OpenGL的工作原理和基本概念,包括上下文创建、窗口系统集成、绘图函数、...
其次,《OpenGL编程指南》第七版,也被称为“红宝书”,是OpenGL学习的经典之作。这本书全面介绍了OpenGL 4.x版本,包括新的核心模式、固定功能管道的移除、向量和矩阵运算、着色语言GLSL、纹理、帧缓冲对象、几何...
openGL 学习手册 自己从网上总结的 希望对大家有用
OpenGL 入门学习资料整理 OpenGL 作为当前主流的图形 API 之一,它在一些场合具有比 DirectX 更优越的特性。本文主要介绍了入门的基础知识。 一、OpenGL 的优点 1. 与 C 语言紧密结合 OpenGL 命令最初就是用 C ...
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、...
这个“OPENGL学习 3D小雪人”资源是为初学者设计的,旨在帮助他们理解并掌握OpenGL的基础知识,通过创建一个3D小雪人的实例来实践。 3D小雪人的实现涉及多个OpenGL的关键概念和技术: 1. **窗口系统绑定**:在...
### 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:...