当前位置: 首页 > ops >正文

code::blocks代码及信息回顾

2024年元旦了,回顾整理下Code::blocks相关信息。

Code::blocks目前是信奥指定的NOI Linux上的C++IDE。
信奥官网

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

以前NIO指定的IDE是Dev-CPP,但是那个Dev-CPP调试代码补全很弱,dev太老旧了。
目前code::blocks(简称cbks)在Linux环境下国内外开发者很多,有很多git的开源项目
也提供cbks环境下得cmakes。

Windows应用程序开发visual studio用起来方便傻瓜的很按linus说法,背着开发者做了很多事,显然开发者
对Computer的掌控力被Windows削弱了,WIN不是给程序员是给用户开发的OS,Linux下面常用的Code::Blocks,
Qt Creator没有VS方便,补全弱一些,甚至shell下面命令行g++,但是像C++在偏科研及底层系统和工业
硬件开源的库github上Linux基本是主流,很多Win版本其实是移植来的, 事实上Linux C++及相关IDE是Programmer
的母语环境。

code::blocks在win上开发要下载的20.03, 地址 https://www.codeblocks.org/downloads/binaries/
在这里插入图片描述
下载上面的codeblocks-20.03mingw-nosetup.zip,这个zip只有168M,解压后不用安装,自带mingw
code::blocks配置freeglut网上有很多博客,主要是设置include,lib路径,指定lib
打开下面的buid options…
在这里插入图片描述
link setting, 如下设置lib的名称
在这里插入图片描述
search directoreis->Compiler设置include的路径,由于freeglut放在代码目录,所以这里是相对路径
在这里插入图片描述
linker设置lib路径
在这里插入图片描述
freeglut.dll拷贝到exe同目录下,也可以设置到 setting->Compiler->ToolChain executable->Additional Path
下面设置freeglut.dll所在的路径
在这里插入图片描述

放在lanzou的代码地址:freeglut-exam00
一个是把网上国外博主的vboCube的例子代码移过来了,主要是展示怎么opengl扩展使用vbo
和shader的代码
在这里插入图片描述

另一个是曲柄摇杆机构的动画仿真,其实显示只是用到直线glBegin-glEnd对就是opengl2.0以前的老旧API
但是demo和测试用起来非常方便。
在这里插入图片描述
动画代码直接备份到CSDN上, vmath来自opengl red book


#include <GL/glut.h>
#include <iostream>
#include <vector>
#include "vmath.h"//
//    n1      n2
//
//  n0           n3
class QBYG_Model
{
public:std::vector<vmath::dvec2> nodes;double g01;double g12;double g23;void init();void step(double si);void draw();
};namespace vmath
{bool cir_cir_int(vmath::dvec2& a, double r, vmath::dvec2& b, double R,vmath::dvec2& intv0, vmath::dvec2& intv1)
{////       v0////  a          b////       v1vmath::dvec2 xv = b - a;double s = vmath::length(xv);if (s > (r+R)){return false;}xv /= s;vmath::dvec2 yv(-xv[1], xv[0]);double cos_A = (r*r+s*s-R*R) / (2.0*r*s);double m = cos_A*r;double n = sqrt(r*r-m*m);intv0 = a + xv*m + yv * n;intv1 = a + xv*m - yv * n;return true;
}};static QBYG_Model s_model;void QBYG_Model::init()
{nodes.push_back(vmath::dvec2(0,10));nodes.push_back(vmath::dvec2(30,0));nodes.push_back(vmath::dvec2(80,60));nodes.push_back(vmath::dvec2(100,0));g01 = vmath::length(nodes[1] - nodes[0]);g12 = vmath::length(nodes[2] - nodes[1]);g23 = vmath::length(nodes[3] - nodes[2]);
}void QBYG_Model::step(double si)
{////    b:1      c:2////  a:0           d:3double l_ab_x = g01 * cos(si);double l_ab_y = g01 * sin(si);vmath::dvec2 v_ab(l_ab_x, l_ab_y);nodes[1] = nodes[0] + v_ab;vmath::dvec2 p0, p1;if (vmath::cir_cir_int(nodes[1], g12, nodes[3], g23, p0, p1)){nodes[2] = p0;//std::cout << "    g12 = " <<g12 <<"\n";//double l_12 = vmath::length(nodes[2] - nodes[1]);//std::cout << "    l12 = " <<l_12 <<"\n";}
}void QBYG_Model::draw()
{glColor3d(0.1, 0.1, 0.1);glBegin(GL_LINE_STRIP);for (int i = 0; i < nodes.size(); i++){glVertex2f(nodes[i][0], nodes[i][1]);}glEnd();
}static void resize(int width, int height)
{const float ar = (float) width / (float) height;glViewport(0, 0, width, height);glMatrixMode(GL_PROJECTION);glLoadIdentity();double rt = 0.05;double l = -width*0.5;double r = width*0.5;double b = -height*0.5;double t = height*0.5;l*=rt;r*=rt;b*=rt;t*=rt;glFrustum(l,r,b,t, 5.0, 100.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity() ;}static void display(void)
{static double si = 0;glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);si = si + 1.5;if (si > 360.0){si -= 360.0;}double si_grad = (si / 180.0) * M_PI;//std::cout << "si = " << si << "\n";glLoadIdentity();glTranslated(-30, -20, -20.0);// compute qubingyaogan nodess_model.step(si_grad);// draw qubingyaogans_model.draw();glutSwapBuffers();
}static void idle()
{glutPostRedisplay();
}int main(int argc, char *argv[])
{s_model.init();glutInit(&argc, argv);glutInitWindowSize(800, 600);glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);glutCreateWindow("freeglut demo");glutReshapeFunc(resize);glutDisplayFunc(display);glutIdleFunc(idle);glClearColor(1,1,1,1);glEnable(GL_DEPTH_TEST);glDepthFunc(GL_LESS);glEnable(GL_LIGHT0);glEnable(GL_COLOR_MATERIAL);glEnable(GL_LIGHTING);glutMainLoop();return 0;
}
http://www.xdnf.cn/news/11620.html

相关文章:

  • malloc 的实现原理
  • CSDN规则详解(三)
  • 【Kubernetes系列】私有仓库Harbor和Registry的安装使用
  • test ui-03-cypress 入门介绍
  • Tomcat配置的下载和安装教程(10.1.28)
  • MapReduce详细介绍
  • 【新版】软考 - 系统架构设计师(总结笔记)
  • Dialog详解
  • IDS的详细介绍
  • FreeMarker常见操作
  • MVC、MVP、MVVM模式的概念与区别
  • JDBC基础知识
  • 2024年Web前端最全WebService(1)—WebService的相关概念(WSDL、SOAP、SEI、CXF(1),字节跳动已经四面还见了hr
  • 经典SQL语句大全(基础、提升、技巧、数据开发、基本函数)
  • ngrok软件实现内网穿透
  • 如何修改 Windows 本地 hosts 文件
  • Appium 是什么?
  • CRC 校验解释
  • python中%s是什么意思_python的%s是什么意思
  • Spring Security详细介绍使用
  • LDAP概念和原理介绍
  • Google Protocol Buffers(Protobuf):入门指南、介绍和应用场景
  • 图数据库是什么?一文快速了解相关概念
  • 什么是护网?2024护网行动怎么参加?一文详解_护网具体是做啥的
  • 详解TCP协议(一)——TCP是什么及报文结构
  • EasyUi框架
  • ⭐️Composer常见错误解决
  • C++stack
  • lua入门(1) - 基本语法
  • 成成你好呀笔记整理(知识点合集三)