Delphi下OpenGL2d绘图(04)-画四边形
一、前言
画四边形基本上与前几遍文字代码是相同。区别在于glBegin()的参数“GL_QUADS”。绘制的框架代码可以使用 Delphi下OpenGL2d绘图(01)-初始化 中的代码。修改的部份为 Draw 函数的内容。
二、画四边形
使用GL_QUADS:绘制由四个顶点组成的一组单独的四边形。顶点4n-3、4n-2、4n-1和4n定义了第n个四边形。总共绘制N/4个四边形。学画四边形是为了画位图做准备。
设置颜色:
glColor3f(1, 0.5, 0); 可以设置四边形的颜色,参数为三部份,分别为 R、G、B的值,取得范围为0到1,1表示255,0.5表128。发现前几章对这个函数的参数设置错了,在这里修正一下。
设置四边形的点:
glVertex2f(nleft, ntop); nleft、ntop表示四边形的点在窗口上的像素点位置。每个点的位置需按顺时针或逆时针设置。
代码如下:
procedure TForm1.Draw;
var
l, t, w: Integer;
begin
// 清空缓冲区
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
// 设置四边形的颜色
glColor3f(, 0.5, ); // 绘制第一个多边形
l := ;
t := ;
w := ;
glBegin(GL_QUADS);
glVertex2f(l, t);
glVertex2f(l + w, t);
glVertex2f(l + w, t + w);
glVertex2f(l, t + w);
glEnd(); // 绘制第二个多边形
l := ;
t := ;
glColor3f(, 0.5, );
glBegin(GL_QUADS);
glVertex2f(l, t);
glVertex2f(l + w, t + w);
glVertex2f(l + w, t);
glVertex2f(l, t + w);
glEnd(); SwapBuffers(FDC); //交换双缓冲区内容,这将把刚绘制的图形翻印到屏幕上。
end;
效果图如下:
源码下载:http://files.cnblogs.com/lin557/OpenGL_04.zip
2014-07-10 by lin
Delphi下OpenGL2d绘图(04)-画四边形的更多相关文章
- Delphi下OpenGL2d绘图(02)-画点
一.前言 图形的绘制可以使用glBegin().glEnd()之间完成,绘制的框架代码可以使用 Delphi下OpenGL2d绘图(01)-初始化 中的代码.修改的部份为 Draw 函数的内容. 二. ...
- Delphi下OpenGL2d绘图(03)-画线
一.前言 画线与画点基本上代码是相同.区别在于glBegin()的参数.绘制的框架代码可以使用 Delphi下OpenGL2d绘图(01)-初始化 中的代码.修改的部份为 Draw 函数的内容. 二. ...
- Delphi下OpenGL2d绘图(06)-画图(多窗口、多视图、多个DC)
一.前言 在学习OpenGL的过程中,发现很多函数都是全局的.前面几章中都是在一个窗口DC中画图,那么要在多个窗口画图,需要怎么处理呢?网上方法有多种,这里采用其中一种,利用wglMakeCurren ...
- Delphi下OpenGL2d绘图(05)-画图片Bmp
一.前言 找了不少资料,要画图片要先处理一下,需要引用别的单元,Delphi中没带,需要另外下载Gl.pas.看网上说是自带的OpenGl单元封装的是1.0版的,有此函数未声明.网上可以找到Gl.pa ...
- Delphi下OpenGL2d绘图(01)-初始化
一.前言: Delphi默认支持OpenGl,可以uses OpenGL单元进行引用,便可以使用OpenGL的函数.OpenGl是跨平台的,而且Windows很早就支持并集成在系统中,存在于syste ...
- DELPHI下API简述(1800个API)
DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属 ...
- 深入Delphi下的DLL编程
深入Delphi下的DLL编程 作者:岑心 引 言 相信有些计算机知识的朋友都应该听说过“DLL”.尤其是那些使用过windows操作系统的人,都应该有过多次重装系统的“悲惨”经历——无论再怎样小心, ...
- unity 用LineRender画四边形并测面积
作为一个菜鸡,这个高中数学题差不多废了我两个上午...好了,废话不多说,直接上代码... using System.Collections.Generic; using UnityEngine; pu ...
- Delphi下利用WinIo模拟鼠标键盘详解 有参考价值
https://blog.csdn.net/fgrass_163/article/details/6365296 Delphi下利用WinIo模拟鼠标键盘详解 2011年04月26日 21:03:00 ...
随机推荐
- Let it crash philosophy part II
Designing fault tolerant systems is extremely difficult. You can try to anticipate and reason about ...
- 【cocos2d-x 环境配置-Mac配置篇】
目前我配置的环境需求如下: JDK 1.6 XCode Version 4.6 (4H127) Cocos2d-x 2.2.0 Android Developer 一,下载安装 要配置环境一次性下 ...
- jQuery--基本介绍与下载
本篇内容: 1.jquery学习内容 2.jquery下载,引用 3.使用顺序 4.版本 5.jquery对象与DOM对象转化 jQuery认识: jQuery学习内容 选择器 筛选器 样式操作 文本 ...
- python网络编程--管道,信号量,Event,进程池,回调函数
1.管道 加锁可以保证多个进程修改同一块数据时,同一时间只能有一个任务可以进行任务修改,即串行修改,速度慢了,但牺牲了速度却保证了数据安全. 文件共享数据实现进程间的通信,但问题是: 1.效率低(共享 ...
- Android 线刷小白教程
Android 线刷小白教程 再说一遍,绝不使用刷机精灵等软件. 一.概念 安卓系统一般把rom芯片分成7个区,如果再加上内置sd卡这个分区,就是8个: hboot分区----------负责启动. ...
- mxonline实战9,我要学习功能块,机构详情展示,收藏功能
对应github地址:第9天 一. 实现我要学习功能
- Leetcode 88 合并两个有序数组 Python
合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分 ...
- 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II
1118 AlvinZH's Fight with DDLs II 思路 中等题,贪心. 理解题意,每次攻击中,可以使某个敌人生命值-1,自己生命值减去∑存活敌人总攻击力. 贪心思想,血量少攻击高的要 ...
- 电信10兆指的是多少Mbps
一般电信10兆(10Mbps)指的是:下载速度最大在1.25MB/s 1Mbps(兆位/秒) = 0.125MB/S(兆字节/秒) 8Mbps(兆位/秒) = 1MB/ ...
- 本地docker镜像上传Docker Hub,并且在腾讯云上pull该镜像,最后运行成功。
1:在docker hub 上注册一个账号(本人直接能注册,有的说不能),然后创建自己的仓库. 2:登录docker hub ( longdbdocker --hub账号,longdb --仓库名称) ...