Embedded GPU

用Bresenham算法在FPGA上实现小数分频器

呵呵,人真的很奇妙,什么样的想法都有。
最近朋友问了一个问题,输入时钟是33MHz,要分出一路2.048MHz的时钟来,要求相位抖动尽可能小。我想到可以用计算机图形学中绘制直线的Bresenham算法来解决,获得成功。
输入时钟是33000kHz,输出时钟是2048kHz,好比从原点画一条到(33000,2048)的直线,用输入时钟驱动画笔在 x 方向的运动,那么对应的 y 方向的运动就是输出时钟。
Verilog代码如下:
module  divider(clk_in, clk_out, nrst);
  input  clk_in,  nrst;
  output clk_out;
  r   … … … …   阅读更多

News, OpenGL

直线的生成算法

在光栅显示器的荧光屏上生成一个对象,实质上是往帧缓存寄存器的相应单元中填入数据。画一条从(x1, y1)到(x2, y2)的直线,实质上是一个发现最佳逼近直线的象素序列,并填入色彩数据的过程。这个过程也称为直线光栅化。
直线的DDA算法
DDA是数字微分分析式(Digital Differential Analyzer)的缩写。设直线之起点为(x1,y1),终点为(x2,y2),则斜率m为:
m = (y2-y1)/(x2-x1)=dy/dx

   直线中的每一点坐标都可以由前一点坐标变化一个增量(Dx, Dy)而得到,即表示为递归式:
xi+1=xi+Dx
yi+1=yi+Dy
并有关系   … … … …   阅读更多

News, OpenGL

三星的3d引擎架构

vincent研究完成,现在开始测试他的引擎,添加各种case。下面是三星的一款3d引擎架构的features。
这是他的feature 42.1.1 FEATURES • 4M triangles/s @133MHz (Transform Only) • 75.8M pixels/s fill-rates @133MHz (shaded pixels) • Programmable Shader Model 3.0 support • 128-bit (32-bit x 4) Floating-point Vertex Shader – Geometry-texture cache supp   … … … …   阅读更多

News, opengl es

OpenGL Auto Texture Coordinates Generation

OpenGL自动纹理坐标生成 (OpenGL Auto Texture Coordinates Generation)
OpenGL中有两种方法为顶点(Vertex)指定纹理坐标:

由人工给每个顶点分配坐标。可以通过函数glTexCord*()来完成。 .
由OpenGL自动为每个顶点分配坐标。这个任务由函数glTexGen*()来完成。 .

一开始,我对glTexGen*()这个函数并不是十分的理解,不知道OpenGL到底是怎样自动生成纹理坐标的。查阅了相关的资料,才开始有一点明白:要完成自动纹理坐标的生成,首先要指定以什么样的模式(既什么样的算法)来生成纹理坐标。 在OpenG   … … … …   阅读更多

News, OpenGL

如何投影一个纹理

如何投影一个纹理 原文出处:SGI OpenGL 教程 翻译:心蓝 潘李亮。 Email: Xheartblue@etang.com 译者前言:   影子有两种经典的实现方法:一是Shadow Volume 。二是Shadow Mapping。如何用Light Mapping来实现投影影子呢?这就要用到Project Texture.直接翻译的意思就是投影纹理—-把一个纹理像放幻灯片一样投影到场景中去,假想有一个电影机在放电影,沿着镜头方向,电影将被投在墙上,而投影纹理就类似于这种情况,我们想要使用的纹理就是电影机里Film。   以下是我在SGI的教程中找到的文章。奉献给大家。   … … … …   阅读更多

News, OpenGL

Projective Texture的原理与实现

Projective Texture是比较常见的一种技术,实现起来代码也就区区的不过百行,了解其原理及技术细节是我们的重点,知其然,知其所以然。    粗略的说就是想象场景中有台投影仪(Projector),texture 们投影的内容,把纹理放在近裁剪面(near clip plane)上,沿着投影仪的方向把纹理投影到场景中。Xheartblue兄翻译了一篇文章,很好的给投影纹理的原理进行的阐述[1],有兴趣阅读原文的可以访问这里[2],这本书可以是好东东啊!!   在这里有几个概念不能混淆了:Camera–人眼坐标;Projector–投影仪坐标。在纹理坐标自动生成   … … … …   阅读更多

News, OpenGL

Vertex Buffer Object

关于GL_ARB_vertex_buffer_object扩展<转>   GL_ARB_vertex_buffer_object,一般简称为VBO,这是OpenGL里的一个千呼万唤始出来的扩展,它可以根据实际情况决定把顶点数据放到显存、AGP内存或系统内存中。
  没有这个扩展的时候,偶们用vertex array时,用glVertexPointer / glNormalPointer 来指定顶点数据,这时顶点数据是放在系统内存中的,每次渲染时,都要把数据从系统内存拷贝到显存,消耗不少时间。
  实际上很多拷贝都是不必要的,比如静态对象的顶点数据是不变的,如果能把它们放到   … … … …   阅读更多

News, OpenGL

Vertex Buffer Object

关于GL_ARB_vertex_buffer_object扩展<转>   GL_ARB_vertex_buffer_object,一般简称为VBO,这是OpenGL里的一个千呼万唤始出来的扩展,它可以根据实际情况决定把顶点数据放到显存、AGP内存或系统内存中。
  没有这个扩展的时候,偶们用vertex array时,用glVertexPointer / glNormalPointer 来指定顶点数据,这时顶点数据是放在系统内存中的,每次渲染时,都要把数据从系统内存拷贝到显存,消耗不少时间。
  实际上很多拷贝都是不必要的,比如静态对象的顶点数据是不变的,如果能把它们放到   … … … …   阅读更多

News, OpenGL

opengl course

发现一个很好的opengl课程
http://ezekiel.vancouver.wsu.edu/~cs442/

News, OpenGL

opengl course

发现一个很好的opengl课程
http://ezekiel.vancouver.wsu.edu/~cs442/

News, OpenGL