Menu Home

png转换OpenGL Texture

bool loadPngImage(char *name, int *outWidth, int *outHeight, bool *outHasAlpha, GLubyte **outData) { png_structp png_ptr; png_infop info_ptr; unsigned int sig_read = false; int color_type, interlace_type; FILE *fp; printf(“png file : %s\n”, name); if((fp = fopen(name, “rb”)) == NULL) { printf(“%s: open png file error: \n”, __FILE__); perror(“open filed:\n”); return false; } […]

LINUX网卡(设置千兆网卡速度及模式)

Ethtool命令: 摘要 ethtool ethX #查询ethX网口基本设置 ethtool –h #显示ethtool的命令帮助(help) ethtool –i ethX #查询ethX网口的相关信息 ethtool –d ethX #查询ethX网口注册性信息 ethtool –r ethX #重置ethX网口到自适应模式 ethtool –S ethX #查询ethX网口收发包统计 ethtool –s ethX [speed 10|100|1000] #设置网口速率10/100/1000M [duplex half|full] #设置网口半/全双工 [autoneg on|off] #设置网口是否自协商 [port tp|aui|bnc|mii] #设置网口类型 [phyad N] [xcvr internal|exteral] [wol p|u|m|b|a|g|s|d…] [sopass xx:yy:zz:aa:bb:cc] [msglvl N] 举例 […]

埃拉托斯特尼筛选法

埃拉托斯特尼筛选法又称筛法,是求不超过自然数N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。 具体做法是: 先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。(另一种解释是当时的数写在纸草上,每要划去一个数,就把这个数挖去,寻求质数的工作完毕后,这许多小洞就像一个筛子。) using std::size_t; using std::sqrt; using std::string; class SieveTest : public TestSuit::Test { string sieveChars; public: SieveTest() : sieveChars(50, ‘P’) {} void run() { findPrimes(); testPrimes(); } bool isPrime(int p) { if(p == 0 || p == 1) return false; int root = int(sqrt(double(p))); for(int i = 2; […]

xlib创建一个openGL简单窗口

void CreateWindow(int width, int height) { XInitThreads(); m_scrWidth = width; m_scrHeight = height; int attr[] = { GLX_RENDER_TYPE, GLX_RGBA_BIT, GLX_DOUBLEBUFFER, True, GLX_DEPTH_SIZE, 16, None, }; m_dpy = XOpenDisplay(NULL); if (m_dpy == NULL) { cerr << “XOpenDisplay error” << endl; return; } int nelements; GLXFBConfig *fc = glXChooseFBConfig(m_dpy, 0, attr, &nelements); […]

linux下使用C语言生成bitmap

#ifndef SAVEBMP_H #define SAVEBMP_H #include <stdio.h> #include <stdlib.h> typedef long LONG; typedef unsigned char BYTE; typedef unsigned int DWORD; typedef unsigned short WORD; typedef struct { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BMPFILEHEADER_T; typedef struct { DWORD biSize; DWORD biWidth; DWORD biHeight; WORD biPlanes; WORD […]

vim 使用技巧

多行注释 增加注释 1. ctrl + v 进入可视块选择,使用上下左右键选择需要注释的行 2. shift + i 进入插入模式 3. 输入注释符号 eg. // 4. ESC 取消注释 1. ctrl + v 进入可视块选择,使用上下左右键选择需要取消注释行的注释符 2. d 删除注释符号 折叠代码 vim 提供 6中折叠方式(set fmd=****): manual 手工定义折叠 indent 更多的缩进表示更高级别的折叠 expr 用表达式来定义折叠 syntax 用语法高亮来定义折叠 diff 对没有更改的文本进行折叠 marker 对文中的标志折叠 vim折叠命令: zc 折叠 zC 对所在范围内所有嵌套的折叠点进行折叠 zo […]