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

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

VS2008配置NDK开发环境

看到很多网上的文章都有写VS配置NDK开发环境,我是参考了其中的一篇文章,连接是点击打开链接。但是这篇文章里面的配置不能关联Application.mk文件。所以觉得不是很方便,经过一阵摸索,终于找到一个可以 关联Application.mk文件的方法。软件准备:1、VS20082、NDK具体步骤如下:1、打开VS2008,新建Makefile工程。2、在设置中设置编译、重新编译、清理的命令,de...
阅读(640) 评论(0)

OpenGL ES着色语言-UBO

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

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

OpenGL光照模型,在固定管线中,主要是调用OpenGL函数实现,如果使用着色器,该怎么实现。本文的例子是移植OpenGL 4.0 Shading Language Cookbook中第二章的例子。代码已经移植到Android上。    散射光计算主要涉及到两个向量,第一个是顶点到光源的向量S,以及顶点处的法向量N。光照计算在眼睛坐标中进行。具体见下图所示:有这两个向量之后,还要考虑顶点处的漫反...
阅读(1500) 评论(0)

GLSL程序对象的C++封装

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

常用位操作的c++实现

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

c++三种使用shared_ptr的方式

在c++中,我们是越来越多的使用智能指针,其中我们说的智能指针通常是指基于引用计数的智能指针,在c++11标准中就是std::shared_ptr。它的特点是如果可以安全的放入STL容器中。有以下三种方式可以使用shared_ptr1、如果你的c++编程环境支持c++标准,那么可以直接使用std::shared_ptr,它定义在memory文件中。2、如果你的c++实现支持C++ TR1库扩展,那...
阅读(1618) 评论(0)

Hilbert曲线简介及生成算法

Hilbert曲线 Hilbert曲线是一种填充曲线,类似的填充曲线还包括Z曲线,格雷码等其他方法。Hilbert曲线依据自身空间填充曲线的特性,可以线性地贯穿二维或者更高维度每个离散单元,并且仅仅穿过一次,并对每个离散单元进行线性排序和编码,该编码作为该单元的唯一标识。空间填充曲线可以将高维空间中没有良好顺序的数据映射到一维空间,经过这种编码方式,空间上相邻的对象会邻近存储在一块,可以减少IO的...
阅读(3015) 评论(0)

GIS中的WKB介绍

GIS中的WKB介绍WKB的全称是The Well-known Binary,也简称WKB,OGC与ISO/TC211都做出了同样的规范,它是用来几何体的表达。即用连续的二进制流来表达几何体,这样在GIS互操作方面也有好处。现代GIS软件的底层模块中可以说都有关于WKB解析代码。在二进制存储中有大尾端和小尾端之分,通常在二进制流的第一个字节就指定,这样在这个字节之后的字节流就可以按照相应的大小尾端...
阅读(3394) 评论(0)

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

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

GLSL实现图像处理

今天晚上没事将以前弄的OPENGL着色语言实现滤镜效果的实现和大家分享一下,滤镜主要包括图像的对比度调整、浮雕效果、彩色图片灰度化、卷积等操作。         这些操作其本质上是属于图像处理的东西,OpenGL实现图像处理主要是用到了GLSL着色语言。具体到着色器就是片段着色器。         说白了就是如何用OpenGL做通用GPU计算,OpenGL做通用计算的步骤主要如下:读取数据->顶点...
阅读(9089) 评论(2)

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

在我们的开发中,跨平台的需求越来越强烈,如何保持C/C++代码能在多个平台上编译,是一个比较值得研究的问题。关于跨平台的文章网上很多,跨平台的库网上也很多。那么我从自己的跨平台开发经验谈一谈自己的心得,希望对大家能够起到一定的作用。主要涉及到Windows和linux两个操作系统。1、  关于路径和头文件路径分隔符的问题在Windows中,正斜杠和反斜杠都可以,但是在Linux中,只能是/。在Wi...
阅读(4455) 评论(2)

OpenGL中投影变换函数的实现

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

OpenGL投影矩阵的推导

转载地址:http://www.songho.ca/opengl/gl_projectionmatrix.htmlOpenGL Projection MatrixRelated Topics: OpenGL TransformationOverviewPerspective ProjectionOrthographic ProjectionUpdates: The MathML version i...
阅读(2035) 评论(0)

OpenGL坐标变换

转载地址:http://www.songho.ca/opengl/gl_transform.htmlOpenGL TransformationRelated Topics: OpenGL Pipeline, OpenGL Projection Matrix, OpenGL Matrix Class Download: matrixModelView.zip, matrixProjection.zi...
阅读(2578) 评论(0)
127条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:832644次
    • 积分:8200
    • 等级:
    • 排名:第2421名
    • 原创:107篇
    • 转载:20篇
    • 译文:0篇
    • 评论:379条
    个人简介
    毕业于FuZhou University,目前在北京从事GIS与遥感的研发工作,研究兴趣为GIS,并专注于C/C++。如果有什么事可以通过邮箱zhouxuguang236@126.com联系到我,如果需要转载原创的文章,也请添加链接,谢谢!
    博客专栏
    最新评论