Render
opengl
webgl
南山搬砖道人
热爱技术,热爱和平
展开
-
GLSurfaceView
用户可以在GlSurfaceView上自定义渲染器(render)并在独立的线程中运行,内置一个surface(一块内存)能直接在android view上排版,它管理的egl display可以让opengl 把内容渲染在suerface上。GLSurfaceView是一个视图,继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。GLSurfaceView提供了下列...原创 2019-10-12 17:07:52 · 374 阅读 · 0 评论 -
opengl帧缓冲
缓冲区用于写入颜色值的颜色缓冲、用于写入深度信息的深度缓冲和允许我们根据一些条件丢弃特定片段的模板缓冲。这些缓冲结合起来叫做帧缓冲(Framebuffer),它被储存在内存中。OpenGL允许我们定义我们自己的帧缓冲,也就是说我们能够定义我们自己的颜色缓冲,甚至是深度缓冲和模板缓冲。我们目前所做的所有操作都是在默认帧缓冲的渲染缓冲上进行的。默认的帧缓冲是在你创建窗口的时候生成和配置的(GLFW...原创 2019-01-04 17:59:36 · 340 阅读 · 0 评论 -
opengl混合
OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透明的物体,玻璃有它自己的颜色,但它最终的颜色还包含了玻璃之后所有物体的颜色。这也是混合这一名字的出处,我们混合(Blend)(不同物体的)多...原创 2019-01-04 17:45:49 · 159 阅读 · 0 评论 -
opengl测试操作
深度测试深度缓冲(Depth Buffer)来防止被阻挡的面渲染到其它面的前面。在这一节中,我们将会更加深入地讨论这些储存在深度缓冲(或z缓冲(z-buffer))中的深度值(Depth Value),以及它们是如何确定一个片段是处于其它片段后方的。深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息,并且(通常)和颜色缓冲有着一样的宽度...原创 2019-01-04 17:37:41 · 875 阅读 · 0 评论 -
opengl光照
基础光照这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子:环境光照(Ambient Lighting):即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远...原创 2019-01-04 17:18:07 · 926 阅读 · 1 评论 -
opengl摄像机
摄像机/观察空间当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向、一个指向它右测的向量以及一个指向它上方的向量。细心的读者可能已经注意到我们实际上创建了一个三个单位轴相互垂直的、以摄像机的位置为...原创 2019-01-04 16:52:00 · 372 阅读 · 0 评论 -
opengl坐标系统
概述为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Cl...原创 2019-01-04 16:16:14 · 237 阅读 · 0 评论 -
opengl矩阵向量
如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transform)一个物体。向量向量最基本的定义就是一个方向。或者更正式的说,向量有一个方向(Direct...原创 2019-01-04 11:35:24 · 448 阅读 · 1 评论 -
opengl纹理
关于纹理可以为每个顶点添加颜色来增加图形的细节,从而创建出丰富的图像。想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销.纹理是一个2D图片,它可以用来添加物体的细节,这样就可以让物体非常精细而不用指定额外的顶点。为了能够把纹理映射(Map)到三角形上,我们需要指定三角形的每个顶点各自对应纹理的哪个部分。这样每个顶点就会关联着一个纹理坐标(Textur...原创 2019-01-03 17:21:50 · 395 阅读 · 0 评论 -
opengl绘制三角形
顶点数组对象:Vertex Array Object,VAO顶点缓冲对象:Vertex Buffer Object,VBO索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO渲染管线在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D...原创 2019-01-03 17:20:32 · 812 阅读 · 0 评论 -
opengl基础
openglopengl是一个由Khronos组织制定并维护的规范(Specification) 。是一系列的图形软件编程接口,和gdi类似。opengl有很多封装的库最有名的GLFW库。接下来很多东西以GLFW 为例子来说明一些api的使用问题,但这并不影响opengl本身的逻辑表述。状态机OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应...原创 2019-01-03 17:18:58 · 174 阅读 · 0 评论 -
opengl GLSL
GLSL着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中。一个典型的着色器有下面的结构:#version version_numberin typ...原创 2019-01-03 17:11:39 · 189 阅读 · 0 评论