因为项目开发需要, 我要在Ubuntu中使用多线程编程进行,以便能够在不影响主线程的情况下, 读写虚拟环境中的相关数据. 强烈建议先阅读[C/C++ 多线程(程序猿面试重点)CodeBlocks-CB的pthreads使用]了解Ubuntu下使用多线程编程时的基本理论知识. 里面有很详细的解释说明 初始代码 这里我首先参考了部分网上博客, 写了如下Read&Write的demo. 1#include <pthread.h> 2#include <stdio.h> 3#include <sys/time.h> 4#include <string.h> 5#include <unistd.h> 6#define MAX 10 7int …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/75074051 个人blog地址:http://yaoyl.cn/huan-jing-da-jian-si-2/ 障碍物移动的改进 在之前的版本中.我们的障碍物移动和场景移动放在同一个for循环中,虽然减少了代码的操作,但是很容易出现边界问题,程序运行中往往会出现障碍物骤现,或者障碍物还未抵达车前方便突然消失的情况,为了修改这出bug,我将重写这部分代码. 需求分析 无脑写代码的多数结果都是bug不断,并且写完后文就忘记前文.为了提高代码的清晰度和准确性,挺尸帮我们捋清思路,我们先通 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/75073755 个人blog地址:http://yaoyl.cn/huan-jing-da-jian-san/ 移动场景的环境搭建 需要移动的场景主要集中在公路,草坪,楼房和障碍物.下面我将逐一实现它们的移动. 公路以及草坪的移动 公路的移动较为简单,还记得我们在第一节中那个run_len变量么,在这里我们将使用它进行操作,已达到移动的效果.代码如下: 1 /* 开始进行场景移动 / 2 go_ahead_rate += go_ahead_ac; 3 / 防止速度过快 */ 4 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/75073580 个人blog地址:http://yaoyl.cn/huan-jing-da-jian-er/ 基本素材和环境的准备 显示列表 基本准备 显示列表部分的内容请先阅读<nehe学习笔记(九)>的"显示列表"部分.这里我就不再对代码进行一一解读了. 为了适应本次实验的需求,我们需要对boxcol数组进行适当修改,将原本的正方体模型数组转修改长方体,其中,顶点的绘制准则在<nehe学习笔记(八)>中有绘图进行描述. BuildList函数填充 根据<nehe学习笔记(九)>中 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/75073333 个人blog地址:http://yaoyl.cn/huan_jing_da_jian_yi/ 综述 本篇博客将对整个虚拟环境的搭建进行一个综述,后续将会对环境中各个功能的实现进行一一解释分析. 功能 整个pro实现了模仿一辆车在街道上进行奔驰的场景(目前实现的是在直道上行驶,后续会加入转弯功能).项目的运行效果如图所示. 简单描述 为了实现上述功能,我将整个项目大致分为如下几块. …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/Michael753951/article/details/72990141 个人blog地址:http://yaoyl.cn/socketbian-cheng-xiao-jie/ 本部分内容是对之前博客【 Ubuntu下进行Socket编程】中的补充说明,在这篇博客中,我将详细解释Socket编程的代码,分析编程的流程和思想。 **声明:**本部分代码分别引用自【Linux C Socket编程原理及简单实例】以及【Linux网络编程:socket文件传输范例】。 首先我们先分析第一份较为简单的代码,使用Socket编程完成一个两个控制台窗口 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/Michael753951/article/details/72553287 个人blog地址:http://yaoyl.cn/ubuntu-xia-jin-xing-socket-bian-cheng/ 这是第一次进行网络编程,献给Ubuntu了。 由于需要结合OpenGL搭建的虚拟环境进行实验,为了将虚拟环境中的实验参数传送至另一台PC机协同工作。我们选择使用网络编程进行数据通行。本次博客先运行两个demo体会一下利用C++进行Socket编程。 实验进行 我们在本次实验中将运行两个demo,第一个demo用来进行文件传输,第二个demo用 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/72810534 个人blog地址:http://yaoyl.cn/nehexue-xi-bi-ji-shi/ 概述 本部分博客将以nehe教程第2课,笔记(三)为蓝本,将Windows中完成的基础实验在Ubuntu中进行实现。 在【Ubuntu环境配置】中我们已经对Ubuntu中的OpenGL环境进行了配置,并且完成了最基础的茶壶demo,接下来我们将进行实验相关的后续开发。 需求分析 因为实验中我们需要终端接收到的数据能够在图形界面中实时显示出来,这里我们使用nehe教程的第二课内 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/71750809 个人blog地址:http://yaoyl.cn/nehexue-xi-bi-ji-jiu/ 前言 本次笔记为nehe课程第11课的学习内容,通过实验,我们可以利用正弦函数绘制一个舞动的旗帜。在本次课程中,我们也将学习OpenGL中glPolygonMode函数对一个模型的正面和反面进行不同模式的绘图。 glPolygonMode 函数介绍 本部分内容请先查看前人整理的博客【OpenGL学习笔记(7)多边形绘制】。请先仔细阅读该博客,理解如何区分模型中的正面反面(依然 …
阅读更多龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951/article/details/71702311 个人blog地址:http://yaoyl.cn/nehexue-xi-bi-ji-ba/ 前言 本部分单独讲Lesson10的内容,本次讲述重点将不再是作者在代码中各种方法如何如何调用,比如如何实现旋转,如何绘制图像,如何实现透明,如何实现步进等等,这个在我前面7篇笔记中已经有详细的说明了,本篇笔记将不再重复,如果有什么疑问可以翻我之前的笔记或者上网查询。 本次实验参变量不少,作者通过代码带我们真正的实现了一个3D世界,我们可以在这个3D世界里面自由的走动和观察。( …
阅读更多