通常一个纹理映射的步骤是: 创建纹理对象.就是获得一个新的纹理句柄 ID. 指定纹理.就是将数据赋值给 ID 的纹理对象,在这一步,图像数据正式加载到了 ID 的纹理对象中. 设定过滤器.定义了opengl现实图像的效果,如纹理放大时的马赛克消除. 绑定纹理对象.就是将 ID 的纹理作为下面操作的纹理. 纹理映射.将已绑定纹理的数据绘制到屏幕上去,在这一步,就能看到贴图的效果了. 一.opengl 中启用纹理映射功能 在默认设置中,纹理映射是关闭的,启用的参数是 GLTEXTURE2D, 还有其…
本文主要演示OpenGL ES 3.0 纹理演示.接口大部分和2.0没什么区别,脚本稍微有了点变化而已. 扩展GLSurfaceView package com.example.gles300; import android.app.ActivityManager; import android.content.Context; import android.content.pm.ConfigurationInfo; import android.opengl.GLSurfaceView; im…
Qt的Graphics-View框架和OpenGL结合详解 演示程序下载地址:这里 程序源代码下载地址:这里 这是一篇纯技术文,介绍了这一个月来我抽时间研究的成果. Qt中有一个非常炫的例子:Boxes,它展示了Qt能够让其Graphics–View框架和Qt的OpenGL模块结合起来,渲染出非常出色的效果.其实我私自认为凭这个程序,已经有很多游戏开发者关注Qt了,因为游戏开发一个非常常见的模块就是UI,一般情况下游戏引擎提供的UI模块比较弱,基本上都是游戏引擎+第三方GUI库进行结合的.但是Q…
OpenGL ES为缓存提供数据的7个步骤: 1.生成glGenBuffers()——请求OpenGL ES为图形处理器控制的缓存生成一个独一无二的标识符. 2.绑定glBindBuffer()——告诉OpenGL ES为接下来的运算使用一个缓存. 3.缓冲数据glBufferData()或glBufferSubData()——让OpenGL ES为当前绑定的缓存分配病初始化足够的连续内存(通常是从CPU控制的内存复制数据到分配的内存). 4.启用或者禁止glEnableVertexAttrib…
写在前面 OpenGL能做的事情太多了!很多程序也看起来很复杂.很多人感觉OpenGL晦涩难懂,原因大多是被OpenGL里面各种语句搞得头大,一会gen一下,一会bind一下,一会又active一下.搞到最后都不知道自己在干嘛,更有可能因为某一步的顺序错误导致最后渲染出错,又或者觉得记下这些操作的顺序是非常烦人的一件事.那么,OpenGL为什么会长成这个样子呢?这篇文章旨在通过一个最简单的OpenGL程序开始,让我们能够"看懂"它,"记住"这些操作顺序. 我们先来解…
1.理解纹理 OpenGL中的纹理能够用来表示图像.照片,甚至由一个数学算法生成的分形数据.每一个二维的纹理都由很多小的纹理元素组成.它们是小块的数据,类似于我们前面讨论过的片段和像素.要使用纹理,最经常使用的方式是直接从一个图像文件载入数据. 每一个二维纹理都有其自己的坐标空间,其范围是从一个拐角的(0,0)到还有一个拐角的(1.1).依照惯例,一个维度叫做S,而还有一个称为T.当我们想要把一个纹理应用于一个三角形或一组三角形的时候.我们要为每一个顶点指定一组ST纹理坐标,以便OpenGL知道…
在开发一些相对较大的场景时,例如:一片铺满相同草地纹理的丘陵地形,如果不采用一些技术手段,就会出现远处的丘陵较近处的丘陵相比更加的清晰的视觉效果,而这种效果与真实世界中近处的物体清晰远处物体模糊的效果是相违背的. 这是因为采用"透视投影"进行三维场景的绘制过程中,会产生近大远小的效果,而远处的丘陵与近处丘陵在绘制过程中采用的却是同一幅纹理图.如下图所示为未采用Mipmap纹理贴图和采用Mipmap纹理贴图后的运行效果. 从两幅运行效果图可以看出: 第一幅图 近处山体与远处山体在视觉效果…
一:运行环境 JDK:1.8 ES:5.6.4 二:学习内容 如何构建spring-data-elasticsearch环境? 如何实现常用的增删改查? 如何实现对象嵌套也就是1对多这种关系? 三:JAVA依赖环境 根据spring-data-elasticsearch官网说明,我这采用的是3.0.6.RELEASE版本,spring boot采用的是2.0.1.RELEASE: <project xmlns="http://maven.apache.org/POM/4.0.0"…
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 exec方法的返回值 exec方法返回的其实并不是匹配结果字符串,而是一个对象,简单地修改一下execReg函数,来做一个实验就可以印证这一点: function execReg(reg, str) { var result = reg.exec(str); alert(typeof result…
一.将子类赋值给父类 在C++中经常会出现数据类型的转换,比如 int-float等,这种转换的前提是编译器知道如何对数据进行取舍.类其实也是一种数据类型,也可以发生数据转换,但是这种转换只有在 子类-父类 之间才有意义.并且只能将子类赋值给父类,子类的对象赋值给父类的对象,子类的指针赋值给父类的指针,子类的引用赋值给父类的引用.这在C++中称为向上转型.相反的称为向下转型,但是向下转型有风险,本文只介绍向上转型. 1.1 将子类对象赋值给父类对象 下面我们通过一个具体地实例来看一下: clas…
Batch Normalization: 使用tf.layers高级函数来构建带有Batch Normalization的神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 吴恩达deeplearningai课程 课程笔记 Udacity课程 在使用tf.layers高级函数来构建神经网络中我们使用了tf.layers包构建了一个不包含有Batch Normalization结构的卷积神经网络模型作为本节模型的对比 本节中将使用tf.layers包实现包含有Batch N…
OpenGL 中任何复杂的图形都是由点,线 和三角形组成的. 那么一个矩形 就需要有两个三角形组成. 纹理, 可以理解为一张图片, 我么可以将整张or部分图片绘制到圆形, 矩形等目标图形中. 下图表示了顶点数据 对应 的纹理中的点. 左侧代表定点数据, 其坐标原点是屏幕中央 ; 右侧图片(纹理), 坐标原点是左下角 GLKBaseEffect让我们避开了写shader Language 着色器语言, 相当于对glsl的封装 typedef struct { GLKVector3 positonC…
在这篇文章中,我们将学习如何在openGL中使用纹理贴图. penGL中纹理可以分为1D,2D和3D纹理,我们在绑定纹理对象的时候需要指定纹理的种类.由于本文将以一张图片为例,因此我们为我们的纹理对象绑定一个GL_TEXTURE_2D的纹理. 本文将分为两个部分,一部分是如何通过图片获取一个2D的纹理,另一部分是如何使用一个纹理. 在上一篇中,我们介绍了如何使用shader来绘制一个多边形,本文是基于上一篇的提高,我们也将继续使用shader,对于shader使用不熟的童鞋可以看上一篇. 首先我…
上一篇讲了基础入门 OpenGL (一) ,这一次主要学习OpenGL 纹理基本学习总结 要是做复杂的OpenGL应用程序,一定会用到纹理技术.纹理说白了就是把图片或者视频图像绘制到OpenGL空间中. 因此纹理也有坐标系,称ST坐标.或者UV 上面是纹理坐标空间.但没有固定的方向 以下演示载入一张image作为纹理贴图. public class TextureUtils { public static int createTexture(InputStream ins) { int[] te…
函数的四要素:函数名.输入.输出(返回).加工. 函数分为两种:一种是有返回值得函数,一种是没有返回值的函数. 1. 定义:没有返回值的函数:(当我不需要函数的计算结果再拿出来进行运算的时候,我就不需要有返回值,直接在函数中运算完成加工即可) static void 函数名(参数){ 函数体 } 调用:调用没有返回值的函数: 函数名(实际参数): 在函数中的参数叫做虚参,我们需要给他一个实际的参数才能完成整个运算流程. 例如:我要打印一两个数字的和? public class HS { publ…
  Qt Assistant 这个exe文件可以被我们利用到我们自己的程序为我们添加help,是一个文档浏览器,它的搜索功能,还有最主要的就是他可以让客户自己定义自己索要显示的文档,也就是qch文档.当然我们要给他写好给他,显示那个文档就看他自己了, 1.qhp 与qch.qhp是Qt Help Project的缩写,qch是Qt Compressed Help的缩写.qch就是html的压缩文件,你把很多的html压缩了,之后压缩成qch. 2.qhcp是Qt Help Collection…
https://docs.lvrui.io/2018/09/28/%E8%AF%A6%E8%A7%A3kubeadm%E7%94%9F%E6%88%90%E7%9A%84%E8%AF%81%E4%B9%A6/ 学了很多次,这次,这个BLOG,算是讲得比较清楚了.. 准备升级证书罗 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~· 如果你使用过kubeadm部署过Kubernetes的环境, master主机节点上就一定会在相应的目录创建了一大…
获取centos镜像docker pull centos:7.4.1708 启动并进入centos的容器docker run -i –t centos /bin/bash下载安装python编译环境依赖yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel#安装make编译所需的gcc,g++编译器yum -y install gcc automake autoconf…
$NOMOD51       ;Ax51宏汇编器控制命令:禁止预定义的8051;------------------------------------------------------------------------------; This file is part of the C51 Compiler package; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.;--------------…
create database day20; 查询的时候from前面的字段是需要显示出来的内容,后面是条件use day20;create table phones(id int,pinpai varchar(20),xinghao varchar(20),jiage double,miaoshu varchar(200));insert into phones values (1,'apple','7plus',5800,'so expensive'),  (2,'apple','6',488…
函数注释: // $string: 明文 或 密文 // $operation:DECODE表示解密,其它表示加密 // $key: 密匙 // $expiry:密文有效期 function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5($key); // 密匙a会参与加解密 $…
在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 int main(){   printf("%d /n",htons(16));       return 0;} 得到的结果是4096,初一看感觉很怪. 解释如下,数字16的16进制表示为0x0010,数字4096的16进制表示为0x1000. 由于Intel机器是小尾端,存储数字16时实际顺序为1000,存储4096时实际顺序为0010…
.Net编程中最经常用的元素,事件必然是其中之一.无论在ASP.NET还是WINFrom开发中,窗体加载(Load),绘制(Paint),初始化(Init)等等.“protected void Page_Load(object sender, EventArgs e)”这段代码相信没有人不熟悉的.细心一点一定会发现,非常多的事件方法都是带了“object sender, EventArgs e”这两个参数.这是不是和委托非常相似呢? 一.委托(有些书中也称为委派) 委托是什么呢?这个名字的意思已…
2010年的最后一天了,转载一篇自己认为还不错的文章与大家分享.希望对大家有所帮助. 一,回调函数 我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理.用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢? 使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数. 而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利…
这里向大家描述一下如何使用Tomcat配置JVM参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK的版本,但还是推荐您使用Sun公司发布的JDK. Tomcat配置JVM参数 Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK的版本(只要是符合Sun发布的Java规范的),但我们推荐您使用Sun公司发…
写多线程的时候,想要等main中其他线程都执行完成后(其他线程功能为对一个数字inc+1),输出最终的inc值. 于是写了个循环: while (Thread.activeCount() > 1) { System.out.println(Thread.activeCount()); Thread.yield(); }System.out.println(test.inc);结果进入了死循环 于是,main中只写已下代码: System.out.println(Thread.activeCoun…
ajax() 函数和那些abs()函数 sin()这些函数都是底层实现好了,封装好了,可以直接拿来用的 使用者只需要传入参数,然后就可以得到相应的结果 $.ajax({name:value, name:value, ... })   参数就是:{name:value, name:value, ... }  就像一个json字符串 常用的参数名字: 实例:$.ajax({url:"/jquery/test1.txt",async:false}) .url属性: 要求为String类型的参…
转载自:http://blog.sina.com.cn/s/blog_7776b9d3010144f9.html 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init 来接管他,成为他的父进程…… 一个进程在调用exit…
使用tf.nn.batch_normalization函数实现Batch Normalization操作 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 吴恩达deeplearningai课程 课程笔记 Udacity课程 """ 大多数情况下,您将能够使用高级功能,但有时您可能想要在较低的级别工作.例如,如果您想要实现一个新特性-一些新的内容,那么TensorFlow还没有包括它的高级实现, 比如LSTM中的批处理规范化--那么您可能需要知道一些事情. 这…
Batch Normalization: 使用tf.layers高级函数来构建神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 吴恩达deeplearningai课程 课程笔记 Udacity课程 # Batch Normalization – Solutions # Batch Normalization 解决方案 """ 批量标准化在构建深度神经网络时最为有用.为了证明这一点,我们将创建一个具有20个卷积层的卷积神经网络,然后是一个完全连接的层.…