![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL
文章平均质量分 81
山庄来客
这个作者很懒,什么都没留下…
展开
-
3D立方体及光照
本代码主要实现了一个旋转立方体, 并添加了光照效果。 Qt 版:myglwidget.h#ifndef MYGLWIDGET_H#define MYGLWIDGET_H#include #include #include #include clas原创 2011-09-13 22:27:07 · 1865 阅读 · 0 评论 -
NeHe教程Qt实现——lesson08
NeHe 系列教程之八: 混合英文教程地址:lesson08本课将在第七课的基础上添加颜色混合的代码:namespace {...bool blend; // Blending OFF/ON? ( NEW )...bool bp; // B Pressed?.原创 2012-03-17 09:43:53 · 908 阅读 · 0 评论 -
采用JNI方法利用opengl es 1.x在android上绘图
我们可以在jni层上编写opengl代码, 进行3d 图形的绘制,下面这个例子就是在一个绘制四面体的例子, 实例的绘制代码是在jni层实现的, 采用c++语言编写。 1. 首先, 创建上层应用程序相关类, 组织好调用路径。 这里主要是创建活动类, 渲染类以及相关辅助类。主活动类代码如下:import android.app.Activity;import androi原创 2011-09-22 21:12:11 · 5693 阅读 · 13 评论 -
NeHe教程Qt实现——lesson09
NeHe 系列教程之九: 在3D空间中移动位图英文教程地址:lesson09本课基于第一课的代码, 利用颜色混合的方法,将一个黑白纹理与随机颜色进行混合,产生绚丽的效果。首先是定义相关变量和数据结构,如下所示:namespace { bool twinkle; // Twinkling Stars bool原创 2012-03-17 10:13:24 · 856 阅读 · 0 评论 -
NeHe教程Qt实现——lesson14
NeHe 系列教程之十四: 轮廓字体英文教程地址:lesson14本课展示如何创建和显示轮廓字体,即带有尝试的字体,可沿Z轴旋转和移动, 代码基于第一课。同前一课类似,首先也是要创建字体库以及对应的一些输出字符的方法,代码如下:namespace {#define USE_DISPLAY_LIST //使用显示列表struct FyjStrokeVertex{原创 2012-06-27 23:03:27 · 1176 阅读 · 0 评论 -
NeHe教程Qt实现——lesson15
NeHe 系列教程之十四:纹理 轮廓字体英文教程地址:lesson15本课展示如何创建和显示纹理轮廓字体, 代码基于第一课。首先是字体库的创建:namespace {#define USE_DISPLAY_LIST //使用显示列表struct FyjStrokeVertex{ GLfloat x, y;};struct FyjStrokeS原创 2012-07-29 23:05:13 · 1150 阅读 · 0 评论 -
NeHe教程Qt实现——lesson16
NeHe 系列教程之十四:雾英文教程地址:lesson16本课展示产生雾。相关变量和函数定义:namespace {bool gp;GLuint fogMode[] = { GL_EXP, GL_EXP2, GL_LINEAR };GLuint fogfilter = 0;GLfloat fogColor[4]= {0.5f, 0.5f,原创 2012-07-29 23:22:05 · 896 阅读 · 0 评论 -
NeHe教程Qt实现——lesson17
NeHe 系列教程之十四:2D纹理字体英文教程地址:lesson17本课展示2D纹理生成字体。首先是字体库的建立及相关字符输出函数:namespace { GLuint texture[2]; // Storage For Our Font Texture GLuint loop;原创 2012-07-29 23:44:57 · 1672 阅读 · 0 评论 -
对比es1.x和es2.0纹理加载方法
如下程序将一张图片显示到屏幕上。首先是android jni程序公共头文件:#include #include #include #include 用宏来控制是否使用es1.x//#define USING_ES11分别包含两种情况下的头文件:#ifdef USING_ES11#include #include #else#include #incl原创 2012-07-30 22:23:51 · 2361 阅读 · 0 评论 -
Qt下使用Shader绘制三角形
在Qt下使用可编程管线编写OpenGL的流程是怎样的呢? 下面演示了Qt下使用可编程管线的基本代码:(绘制三个不同的三角形,并做些旋转变换)在Qt中,我们从QGLWidget继承,来实现OpenGL的一些绘制,主要实现其中的initializeGL(), paintGL()以及resizeGL()三个方法,基本声明如下:#ifndef MYGLWIDGET_H#define MYGLWI原创 2012-11-29 16:14:58 · 8953 阅读 · 7 评论 -
GPU深度发掘(一)::GPGPU数学基础教程
GPU深度发掘(一)::GPGPU数学基础教程作者:Dominik Göddeke 译者:华文广 Contents 介绍准备条件 硬件设备要求软件设备要求两者选择 初始化OpenGLGLUTOpenGL 扩展OpenGL 离屏渲染GPGPU 概念1: 数组 = 纹理在CPU上建立数组在 GPU上生成浮点纹理数组索引转载 2012-06-30 13:27:41 · 1972 阅读 · 0 评论 -
EGLImage与纹理
EGLImage代表一种由EGL客户API(如OpenGL,OpenVG)创建的共享资源类型。它的本意是共享2D图像数据,但是并没有明确限定共享数据的格式以及共享的目的,所以理论上来讲,应用程序以及相关的客户API可以基于任意的目的创建任意类型的共享数据。 关于EGLImage的一种使用情景就是通过它来创建一个2D纹理。相关函数原型声明如下:EGLAPI EGLIma原创 2013-05-17 16:58:32 · 28065 阅读 · 2 评论 -
基于textureview编写opengl程序
与SurfaceView相比,TextureView并没有创建一个单独的Surface用来绘制,这使得它可以像一般的View一样执行一些变换操作,设置透明度等。另外,Textureview必须在硬件加速开启的窗口中。下面的例子演示了通过TextureView来创建一个opengl程序。基于TextureView的程序,我们需要实现TextureView.SurfaceTexture原创 2013-05-15 18:11:14 · 9756 阅读 · 1 评论 -
Qt5下OpenGL程序的新写法
在Qt5中,引入了QOpenGL*系列类,以取代Qt4时代的QGL*系列类。下面是从Qt5例子中抠出的两种OpenGL程序模板,方便参考。第一种写法:#ifndef TRIANGLEWINDOW_H#define TRIANGLEWINDOW_H#include #include class QPainter;class QOpenGLContext;c原创 2013-07-04 19:51:38 · 24721 阅读 · 6 评论 -
Problem 63 何时该用glDrawTexiOES?
Problem 63 何时该用glDrawTexiOES?Ans: 首先,这个函数的作用是将指定的纹理贴到视图中的一个矩形区域,无须坐标变换,渲染速度加快。使用的步骤大概如下: glGenTextures(...) glBindTexture(...) ... glTexImage2D(...)原创 2014-03-26 12:54:54 · 3321 阅读 · 0 评论 -
NeHe教程Qt实现——lesson13
NeHe 系列教程之十三: 位图字体英文教程地址:lesson13本课将展示位图字体的创建和显示, 代码基于第一课。首先是字休库的创建,如下所示:namespace {#define USE_DISPLAY_LIST //使用显示列表struct FyjFont{ char *name; //字体名称 int quality;原创 2012-03-24 17:15:58 · 964 阅读 · 0 评论 -
NeHe教程Qt实现——lesson10
NeHe 系列教程之十:在3D空间中漫游英文教程地址:lesson10本课演示了从外部文件中加载数据构建3D模型的实例,代码基于第一课。首先是3D模型的数据结构定义:namespace { bool fp; // F pressed? const float piover180 = 0.0174532925f; float heading;原创 2012-03-17 12:34:03 · 1392 阅读 · 4 评论 -
NeHe教程Qt实现——lesson12
NeHe 系列教程之十二: 显示列表英文教程地址:lesson12本课主要演示了显示列表的使用。代码基于第六课。显示列表的主要接口:glGenListsglNewListglCallList具体来看代码中的使用:namespace { ... static GLfloat boxcol[5][3]= // Array Fo原创 2012-03-24 17:05:54 · 701 阅读 · 0 评论 -
第一个OpenGL程序
OpenGL包含200多个函数,大致分为如下几类函数:图元函数(primitive function)指定要生成屏幕图像的图元。包括两种类型:可在二维、三维或四维空间进行定义的几何图元,如多边形;离散实体,如位图。属性函数(attribute function)负责控制图原创 2011-08-21 01:08:19 · 1605 阅读 · 0 评论 -
min3d 引擎学习笔记之一
min3d是一个小巧的android 3d UI引擎, 最近想对其进行深入源码分析, 在深入学习之前, 还是先学会怎么用它吧。min3d是基于opengl es 1.x的, 它封装了opengl 的一些基本的绘图操作以及绘图管理和渲染操作,形成了一个框架。核心类主要包括场景类原创 2011-09-22 19:49:47 · 4888 阅读 · 1 评论 -
运动模糊
运动模糊效果是指物体移动时,会拖带一个尾巴。通过颜色混合,可以实现这种效果。实现原理就是每隔一小段位移以某种alpha值重复绘制物体, 通过与前面画的物体进行颜色混合来实现模糊的效果。混合因子选择如下: S因子:GL_SRC_ALPHAD因子:GL_ONE 实例代码如下: public class MyRenderer implements Renderer { p原创 2011-11-05 10:12:03 · 1192 阅读 · 0 评论 -
剪刀测试
剪刀测试可限制屏幕的某一部分更新,其他部分不更新。实例代码如下:public class MyRenderer implements Renderer { public MyRenderer(Context ctx) { } @Override public void onDrawFrame(GL10 gl) { // Clear blue windo原创 2011-11-05 10:12:50 · 947 阅读 · 0 评论 -
opengl模板测试实例
在opengl中, 可以开启模板测试功能,来限定某一部分是可画的,某一部分是不可画的。这可通过设置模板模式来控制哪部分是可画的, 有点类似在墙上喷字。 虽说剪刀测试也可以限定蓝屏的某一部分可画,但不适用于不规则的区域,不如模板测试灵活。下面提供一个Android模板测试的实例代码: public class MyRenderer implements Renderer { priv原创 2011-11-05 10:13:41 · 1433 阅读 · 0 评论 -
freeglut中提供的几种立体几何对象绘制的android移植
在freeglut_geometry.c中定义了几种常见图形的绘制,包括立方体, 球面, 圆锥体, 圆柱体, 圆环面, 十二面体, 八面体, 四面体, 二十面体, 菱形十二面体(斜十二面体)等几种立体几何对象的绘制。 移植后的Android Java代码如下所示: /** * fyjengine All Rights Reserved * * @author Yajun Fu原创 2011-11-11 09:16:00 · 7074 阅读 · 1 评论 -
NeHe教程Qt实现——lesson01
NeHe 系列教程之一: 创建一个OpenGL 窗口英文教程地址: lesson01在Qt的实现中, 我们主要依赖QGLWidget类, 我们主要重载三个重要方法 : void initializeGL(); void resizeGL(int w, int h); void paintGL();下面给出实现代码,本课代码框架也是后续课程代码的基础原创 2012-02-26 00:10:01 · 2571 阅读 · 3 评论 -
NeHe教程Qt实现——lesson04
NeHe 系列教程之四: 多边形旋转英文教程地址:lesson04本课在第三课的基础上增加了旋转多边形的代码,具体如下:首先,在头文件中增加了两个旋转因子:#ifndef MYGLWIDGET_H#define MYGLWIDGET_H#include class QTimer;class QKeyEvent;class MyGLWidget : pub原创 2012-02-26 00:38:41 · 948 阅读 · 0 评论 -
NeHe教程Qt实现——lesson02
NeHe 系列教程之二: 绘制多边形英文教程地址:lesson02本课在第一课的代码基础上添加了绘制多边形的代码,具体如下:void MyGLWidget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer原创 2012-02-26 00:19:13 · 1124 阅读 · 0 评论 -
NeHe教程Qt实现——lesson03
NeHe 系列教程之三: 绘制彩色多边形英文教程地址:lesson03本课在第二课的基础上,增加了设置颜色的代码, 具体如下:void MyGLWidget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffe原创 2012-02-26 00:25:35 · 864 阅读 · 0 评论 -
NeHe教程Qt实现——lesson05
NeHe 系列教程之五: 绘制3D几何对象英文教程地址:lesson05本课在第四课的基础上, 绘制真实的3D 对象, 具体如下:void MyGLWidget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth B原创 2012-02-26 00:48:33 · 818 阅读 · 0 评论 -
NeHe教程Qt实现——lesson06
NeHe 系列教程之六: 纹理映射英文教程地址:lesson06本课以第一课的代码为基础,演示了加载纹理的过程。首先给出的是绘制几何对象和加载纹理坐标的代码namespace { GLfloat xrot = 0; // X Rotation ( NEW ) GLfloat yrot = 0;原创 2012-03-05 23:12:51 · 1311 阅读 · 0 评论 -
NeHe教程Qt实现——lesson11
NeHe 系列教程之十一:飘扬的旗帜英文教程地址:lesson11本课实现了类似旗帜飘扬的效果, 其要领就是实时循环改变纹理坐标。本课以第六课的代码为基础。首先是一些全局变量的定义:namespace { GLfloat xrot = 0; // X Rotation GLfloat yrot = 0;原创 2012-03-24 16:55:31 · 896 阅读 · 0 评论 -
NeHe教程Qt实现——lesson07
NeHe 系列教程之七: 光照及纹理过滤英文教程地址:lesson07本课将以第一课的代码为基础, 实现光照效果。首先是对象定义与纹理加载的代码:namespace {bool light; // Lighting ON / OFFbool lp; // L Presse原创 2012-03-17 09:29:07 · 2472 阅读 · 0 评论 -
OpenGL 反锯齿的一些措施
1. 使用颜色混合来消除一些锯齿, 主要针对点和线以及不相互重叠的多边形的反锯齿。反锯齿设置代码如下:glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);glEnable(GL_BLEND);glEnable(GL_POINT_SMOOTH);glHint(GL_POINT_SMOOTH_HINT, GL_NICEST原创 2011-11-05 10:14:23 · 6424 阅读 · 1 评论