心如止水-GISer的成长之路

C/C++ 地理信息系统 计算机图形学 互联网地图

排序:
默认
按更新时间
按访问量

C/C++获得对齐的内存的跨平台解决方案

在C/C++开发的时候,有时候需要获得内存对齐的内存块,这一需求主要源于多媒体指令集需要内存对齐的内存块,这样处理速度会快一点。例如SSE/SSE2/MMX/AVX等指令集都需要对齐的内存。这些多媒体指令集常用于语音合成、图像处理、3D图形学等领域。下面是封装的内存对齐的内存分配函数。void* ...

2016-12-09 20:54:45

阅读数:2589

评论数:1

VS2008配置NDK开发环境

看到很多网上的文章都有写VS配置NDK开发环境,我是参考了其中的一篇文章,连接是点击打开链接。但是这篇文章里面的配置不能关联Application.mk文件。所以觉得不是很方便,经过一阵摸索,终于找到一个可以 关联Application.mk文件的方法。软件准备:1、VS20082、NDK具体步骤...

2016-12-02 23:28:42

阅读数:3268

评论数:0

OpenGL ES着色语言-UBO

Uniform Buffer Objects(简称UBO)是OpenGL3.1引入的。UBO是显卡上的一块缓冲区,即GPU buffer。它允许将数据从客户端程序传送到GLSL程序中。    使用UBO的最大好处是可以在各个shader之间共享数据。    下面还是以OpenGL 4.0 shad...

2016-11-30 13:22:35

阅读数:2875

评论数:0

OpenGL ES着色语言-光照效果之散射光

OpenGL光照模型,在固定管线中,主要是调用OpenGL函数实现,如果使用着色器,该怎么实现。本文的例子是移植OpenGL 4.0 Shading Language Cookbook中第二章的例子。代码已经移植到Android上。    散射光计算主要涉及到两个向量,第一个是顶点到光源的向量S,...

2016-11-20 21:08:19

阅读数:4370

评论数:0

GLSL程序对象的C++封装

在OpenGL的shader编程中,最常用的可能就是程序对象了,GLSL的程序对象的创建、加载shader等步骤都是固定的,如果每次都写同样的代码,觉得十分浪费时间,所以现在就将我在Shader学习过程中自己封装的GLSLProgram类奉献出来供大家参考:头文件如下:/* * GLSLProg...

2016-11-20 15:53:09

阅读数:3778

评论数:0

常用位操作的c++实现

看到这个标题,可能大家会误解,其实就是贡献几个比较实用的运用位运算实现的操作,这对于加快程序的运行速度很有帮助。具体的实现是参考http://graphics.stanford.edu/~seander/bithacks.html实现的。   下面给出其函数声明及其实现。    //判断该整数是否...

2016-10-10 20:40:22

阅读数:2847

评论数:0

c++三种使用shared_ptr的方式

在c++中,我们是越来越多的使用智能指针,其中我们说的智能指针通常是指基于引用计数的智能指针,在c++11标准中就是std::shared_ptr。它的特点是如果可以安全的放入STL容器中。有以下三种方式可以使用shared_ptr1、如果你的c++编程环境支持c++标准,那么可以直接使用std:...

2016-09-11 15:48:27

阅读数:5551

评论数:0

Hilbert曲线简介及生成算法

Hilbert曲线 Hilbert曲线是一种填充曲线,类似的填充曲线还包括Z曲线,格雷码等其他方法。Hilbert曲线依据自身空间填充曲线的特性,可以线性地贯穿二维或者更高维度每个离散单元,并且仅仅穿过一次,并对每个离散单元进行线性排序和编码,该编码作为该单元的唯一标识。空间填充曲线可以将高维空间...

2016-03-05 18:51:20

阅读数:9321

评论数:0

GIS中的WKB介绍

GIS中的WKB介绍WKB的全称是The Well-known Binary,也简称WKB,OGC与ISO/TC211都做出了同样的规范,它是用来几何体的表达。即用连续的二进制流来表达几何体,这样在GIS互操作方面也有好处。现代GIS软件的底层模块中可以说都有关于WKB解析代码。在二进制存储中有大...

2015-10-21 14:20:52

阅读数:7339

评论数:0

地球椭球面上多边形面积量算(C++代码)

昨天突然测试的时候发现以前产品中写的地球椭球面上面积计算的代码有点问题,于是今天就彻底修正,从QGIS中抠出代码来用C++重写了一下,新代码可以比较准确计算椭球面上多边形的面积,这个基础函数对空间量算功能中的面积量测非常重要,在这里共享出来供大家参考甚至直接拿过去用。       头文件如下: /...

2015-05-15 20:32:28

阅读数:5885

评论数:9

GLSL实现图像处理

今天晚上没事将以前弄的OPENGL着色语言实现滤镜效果的实现和大家分享一下,滤镜主要包括图像的对比度调整、浮雕效果、彩色图片灰度化、卷积等操作。         这些操作其本质上是属于图像处理的东西,OpenGL实现图像处理主要是用到了GLSL着色语言。具体到着色器就是片段着色器。        ...

2015-05-06 21:02:23

阅读数:16257

评论数:2

跨平台C、C++代码注意的事项

在我们的开发中,跨平台的需求越来越强烈,如何保持C/C++代码能在多个平台上编译,是一个比较值得研究的问题。关于跨平台的文章网上很多,跨平台的库网上也很多。那么我从自己的跨平台开发经验谈一谈自己的心得,希望对大家能够起到一定的作用。主要涉及到Windows和linux两个操作系统。1、  关于路径...

2015-04-21 09:49:03

阅读数:7509

评论数:2

OpenGL中投影变换函数的实现

在某些情况下,我们需要自己实现透视投影和正射投影的函数,那么根据前一篇转载的博客,OpenGL投影矩阵的推导,我们很容易写出glFrustum和glOrtho函数的实现。glFrustum的函数实现如下:void MyFrustum (GLdouble left, GLdouble right, ...

2015-04-12 17:44:51

阅读数:3849

评论数:0

OpenGL投影矩阵的推导

转载地址:http://www.songho.ca/opengl/gl_projectionmatrix.htmlOpenGL Projection MatrixRelated Topics: OpenGL TransformationOverviewPerspective ProjectionO...

2015-04-12 17:13:55

阅读数:4258

评论数:0

OpenGL坐标变换

转载地址:http://www.songho.ca/opengl/gl_transform.htmlOpenGL TransformationRelated Topics: OpenGL Pipeline, OpenGL Projection Matrix, OpenGL Matrix Class...

2015-04-12 17:12:50

阅读数:5214

评论数:0

OpenGL中gluPerspective函数和glFrustum函数的关系

关于这两个函数,大部分书和以及网上double很少有资料去介绍它。今天就将以前探索到的一些东西分享给大家。gluPerspective函数是对glFrustum函数的一种简单封装,那么gluPerspective的参数如何转化为glFrustum的参数呢?    我们知道gluPerspectiv...

2015-04-11 21:40:21

阅读数:3644

评论数:0

地球椭球体基本要素的计算

地球椭球体基本要素的计算,主要包括纬线弧长、子午线弧长、椭球面上梯形面积,以及同一个椭球体下大地坐标和空间直角坐标之间的转换等。为了方便,写了一个类如下,方便调用,在此也分享给大家:头文件如下:/***************************************************...

2015-04-06 17:21:56

阅读数:4639

评论数:2

三维空间坐标的相似变换原理与实现

说到这个博客的题目,可能觉得有点大,在测绘学领域中三维空间坐标的相似变换用得非常多。那么什么是三维坐标的相似变换呢?就是在两个三维直角坐标系中,坐标进行变换,两个坐标系之间变换需要七个参数,即三个平移分量,以及三个旋转参数和一个尺度因子。这里用到的模型采用摄影测量学中的变换模型,具体推导见摄影测量...

2015-04-06 16:13:25

阅读数:8682

评论数:3

OpenGL中使用Shader的基本步骤

在OpenGL中,创建和使用Shader的基本步骤如下:1、通过glCreateShader创建一个或多个着色器对象:2、使用glShaderSource加载着色器的源代码,和着色器对象关联;3、glCompileShader编译每个着色器对象4、使用glCreateProgram创建程序对象5、...

2015-04-04 15:56:24

阅读数:4317

评论数:0

OpenGL实现通用GPU计算概述

可能比较早一点做GPU计算的开发人员会对OpenGL做通用GPU计算,随着GPU计算技术的兴起,越来越多的技术出现,比如OpenCL、CUDA、OpenAcc等,这些都是专门用来做并行计算的标准或者说接口。       OpenGL用来做通用GPU计算主要是利用纹理存储器在GPU中计算以及把结果取...

2015-03-31 19:18:37

阅读数:11043

评论数:4

提示
确定要删除当前文章?
取消 删除
关闭
关闭