- 浏览: 22723 次
- 性别:
- 来自: 上海
最新评论
-
gongzhq:
deepfuture 写道能不能写个C的教程glut_samp ...
第一课:OpenGL窗口 -
gongzhq:
deepfuture 写道能不能写个C的教程c的你把类中的成员 ...
第一课:OpenGL窗口 -
deepfuture:
能不能写个C的教程
第一课:OpenGL窗口 -
socol:
排版太难看了再弄弄
第一课:OpenGL窗口
文章列表
#include "stdio.h"#include "stdarg.h"
void show(const char * format,...);
int main(){ show("%04d%02d%02d %02d:%02d:%02d [%s:%d] %s\n",2011,4,21,15,33,20,__FILE__,__LINE__,"this is a test"); getchar(); return 0;}
void show(const char * format,...){ va_list ...
欢迎进入第九课。到现在为止,您应该很好的理解OpenGL了。您已经学会了设置一个OpenGL窗口的每个细节。学会在旋转的物体上贴图并打上光线以及融合(透明)处理。这一课应该算是第一课中级教程。您将学到如下的知识:在三维场景中移动位图,并去除位图上的黑色象素(使用融合)。接着为黑白纹理上色,最后您将学会创建丰富的色彩,并把上过不同色彩的纹理相互融合,得到简单的动画效果。
我们要在上一课的代码上进行改动就可以了。
我们将增加一些变量,稍后我们对这些变量进行解释。
NeHeWidget类
(由nehewidget.h展开。)
const GLuint num = 50;
这个常量nu ...
OpenGL中的绝大多数特效都与某些类型的(色彩)融合有关。融合的定义为,将某个象素的颜色和已绘制在屏幕上与其对应的象素颜色相互结合。至于如何结合这两个颜色则依赖于颜色的alpha通道的分量值,以及/或者所使用的融合函数。alpha通常是位于颜色值末尾的第4个颜色组成分量。前面这些课我们都是用GL_RGB来指定颜色的三个分量。相应的GL_RGBA可以指定alpha分量的值。更进一步,我们可以使用glColor4f()来代替 glColor3f()。
绝大多数人都认为alpha分量代表材料的透明度。这就是说,alpha值为0.0时所代表的材料是完全透明的。alpha值为1.0时所代表的材料 ...
QTimerEvent
- 博客分类:
- qt-opengl
1. QTimerEvent
startTimer(5);
void timerEvent(QTimerEvent *);
void NeHeWidget::timerEvent(QTimerEvent *)
{
updateGL();
}
2. QTime SLOT
QTimer *t;
t = new QTimer(this);
connect(t, SIGNAL(timeout()), this, SLOT(updateGL()));
t->start(5);
这一课我会教您如何使用三种不同的纹理滤波方式。教您如何使用键盘来移动场景中的对象,还会教您在OpenGL场景中应用简单的光照。这一课包含了很多内容,如果您对前面的课程有疑问的话,先回头复习一下。进入后面的代码之前,很好的理解基础知识十分重要。
我们要在第一课的代码上进行改动就可以了。
我们将要增加一个loadGLTextures()函数来处理有关纹理操作的。我们将增加一些变量,稍后我们对这些变量进行解释。
NeHeWidget类
(由nehewidget.h 展开。)
protected:
void loadGLTextures();
在这个函数中我们会载入指定的图片并生 ...
学习texture map纹理映射(贴图)有很多好处。比方说您想让一颗导弹飞过屏幕。根据前几课的知识,我们最可行的办法可能是很多个多边形来构建导弹的轮廓并加上有趣的颜色。使用纹理映射,您可以使用真实的导弹图像并让 ...
在上一课的内容上作些扩展,我们现在开始生成真正的三维对象,而不是象前两节课中那样在三维世界中的二维对象。我们给三角形增加一个左侧面,一个右侧面,一个后侧面来生成一个金字塔(四棱锥)。给正方形增加左、右、上、下及背面生成一个立方体。
我们混合金字塔上的颜色,创建一个平滑着色的对象。给立方体的每一面则来个不同的颜色。
其实只需在上节课的代码上增加几行就可以了。
NeHeWidget类
(由nehewidget.cpp展开。)
void NeHeWidget::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_B ...
上一课中我教给您三角形和四边形的着色。这一课我将教您如何将这些彩色对象绕着坐标轴旋转。其实只需在上节课的代码上增加几行就可以了。我们将在NeHeWidget类中增加timerEvent成员函数和两个变量来控制这两个对象的旋转。它们是浮点类型的变量,使得我们能够非常精确地旋转对象。浮点数包含小数位置,这意味着我们无需使用1、2、3...的角度。你会发现浮点数是OpenGL编程的基础。新变量中叫做rTri的用来旋转三角形,rQuad 旋转四边形。
/*NeHeWidget类
由nehewidget.h 展开。*/
/*添加的timeEvent和两个变量。timerEve ...
上一课中我教给您三角形和四边形的绘制方法。这一课我将教您给三角形和四边形添加两种不同类型的着色方法。使用单调着色(Flat coloring)给四边形涂上固定的一种颜色。使用平滑着色(Smooth coloring)将三角形的三个顶 ...
上一课中,我教您如何创建一个OpenGL窗口。这一课中,我将教您如何创建三角形和四边形。 我们讲使用GL_TRIANGLES来创建一个三角形,GL_QUADS来创建一个四边形。 我们只要修改第一课中的NeHeWidget类中的paintGL()函数就可以了 ...
nehewidget.h
/* NeHeWidget类
* 这就是我们继承QGLWidget类得到的OpenGL窗口部件类。
* 由nehewidget.h 展开。
*/
#include <QtOpenGL>
class NeHeWidget : public QGLWidget
{
/*因为QGLWidget类被包含在qgl.h头文件中,所以我们的类就需要包含这个头文件。Q_OBJECT是Qt中的一
*个专用的宏,具体说明请参见Qt的文档。
*/
Q_OBJECT
publi ...
应工作关系,开始接触OpenGL,先学习NeHe OpenGL,并准备使用QT4 重写。
#ifdef HAVE_CONFIG_H# include <config.h>#endif
#include "id3/id3lib_streams.h"#include <stdlib.h>
#include <id3/tag.h>#include <id3/misc_support.h>
using std::cout;using std::endl;
int main( int argc, char *argv[]){ if (argc != 3) { cout << "U ...
10000以内的素数:
[x for x in range(2,10000) if not [i for i in range(2,x) if x % i == 0 ] ]
reduce( lambda s, x: s+ ([x] if all([x %i for i in s]) else []),
range(2,10000), [])
[2]+[d for d in range(3, 10000, 2) if 2 ** (d -1) %d == 1]
project欧拉第七题
- 博客分类:
- python
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10001st prime number?
寻找第10001个素数(prime number)。