我努力地解决了这个问题,似乎无法渲染.
怎么能解决这个问题呢?我希望OpenGL渲染它看起来像下面这张图片的右侧:

我只想看到我自己的数据类型/函数/函数参数与不同的颜色.
我之前使用过Visual Assist X,但由于某些未知原因它停止工作.它不会每次都为自定义函数或函数参数着色.此外,我的试用时间很快就结束了,我不打算买一些不能正常工作或者我甚至不使用的大多数功能.
因此,如果有任何免费的语法突出显示为Visual Studio 2008的所有功能等着色,那就是我正在寻找的东西.
我已经将文件内容读入char数组,然后将其中的一些数据读入向量中.如何将一系列char数组复制到向量中?vector和char数组都是相同的类型(unsigned char).
目前的代码是这样的:
int p = 0;
for(...){
short len = (arr[p+1] << 8) | arr[p+0];
p+=2;
...
for(...len...){
vec.push_back(arr[p]);
p++;
}
}
Run Code Online (Sandbox Code Playgroud)
我想通过放弃循环来改进这个push_back,怎么样?
我想在我的.exe中隐藏一些字符串,这样人们就不能简单地打开.exe并查看那里的所有字符串.我不关心加密方法的强度,所以我可能会使用XOR等.
我怎么能在编译时这样做?这样我的字符串将不会存储在.exe中,但加密版本会存储.然后,我每次只使用我的解密功能在屏幕上显示这些字符串.
这样做最简单的方法是什么?我在数学上失败了,我在互联网上找到了非常复杂的公式...我希望如果有一些更简单的吗?
我只需要知道一个球体是否与一个立方体重叠,我不在乎它做了哪个点等.
我也希望它能利用这两个形状都是对称的事实.
编辑:立方体在x,y,z轴上直线对齐
由于某种原因,我无法得到这个工作:
void examplefunctionname(string str, ...){
...
va_start(ap, str.c_str());
Run Code Online (Sandbox Code Playgroud)
我也没有得到这个工作:
void examplefunctionname(string str, ...){
...
int len = str.length();
char *strlol = new char[len+1];
for(int i = 0; i < len; i++){
strlol[i] = str[i];
}
strlol[len] = 0;
va_start(ap, strlol);
Run Code Online (Sandbox Code Playgroud)
但这样做:
void examplefunctionname(const char *str, ...){
...
va_start(ap, str);
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何使用字符串而不是const char *那里?
我打电话时输出随机数 examplefunctionname("%d %d %d", 1337, 1337, 1337)
人们总是告诉我至少使用顶点阵列.但我认为这不是一个好主意,因为我正在使用glPushMatrix()它glTranslatef/glRotatef来定位3d世界中的对象.
那么,我应该停止使用glPushMatrix()并"手动"计算世界中旋转/移动的顶点位置,然后将它们的顶点数据推入顶点数组然后立即渲染它们吗?
但是,当我为屏幕上的所有对象使用不同的纹理表面时,所有这些都会变得更加混乱,这些对象也是深度排序的.
所以:
我做得对吗?
另外,我应该如何为我要排序的对象设计数据结构?例如,std::vector用于存储每个对象的顶点数据是否合适?还是有更好的选择吗?我当时认为std::vector存储所有这些数据看起来像:
struct GameObject {
int TexID;
float z; // we will sort by this
vector<VTCNStruct> VertexData; // store each point of the object here (including color/normal/texcoord points).
};
vector<GameObject> GameObjectBuffer; // push all sortable objects here
Run Code Online (Sandbox Code Playgroud)
此外,在步骤4:std::vector在这种情况下是否可以使用已经存在的?我有这个想法,我必须使用原始数组,比如new float[100]将顶点数组发送到我的GPU,或者我可以某种std::vector方式(有效地)以某种方式使用我已经存在的排序,而不是每次纹理ID更改时都创建新的缓冲区?
我有一个复杂的结构,我希望将其作为std :: map的一个关键字来快速生成所有唯一对象的列表:
union somecomplexstruct {
struct {
more_structs val1, val2;
even_more_structs val3, val4;
lots_of_more_structs val5;
};
unsigned int DATA[3];
};
typedef map<somecomplexstruct, int, greater<somecomplexstruct> > somecomplexstructMap;
Run Code Online (Sandbox Code Playgroud)
但它说错误: error C2784: 'bool std::operator >(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc> &' from 'const somecomplexstruct'
我如何使我的结构在那里工作?
编辑:得到它的工作,感谢大家!下面是代码:
inline bool operator>(const somecomplexstruct &v1, const somecomplexstruct &v2){
if(v1.DATA[0] > v2.DATA[0]) return 1;
if(v1.DATA[0] < v2.DATA[0]) return 0;
if(v1.DATA[1] > v2.DATA[1]) return 1;
if(v1.DATA[1] < v2.DATA[1]) return …Run Code Online (Sandbox Code Playgroud) 这甚至可能吗?因为我注意到v-sync根本不能在我的笔记本电脑上工作,所以我"手动"构建FPS限制器,现在我想使用用户设置到他的屏幕的FPS限制.
编辑:我的意思是显示器hz率.
Edit3:继承了我工作的代码(我认为......那里有什么不对吗?):
DEVMODE lpDevMode;
memset(&lpDevMode, 0, sizeof(DEVMODE));
lpDevMode.dmSize = sizeof(DEVMODE);
lpDevMode.dmDriverExtra = 0;
if(EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &lpDevMode) == 0){
framerate_limit = 60; // default value if cannot retrieve from user settings.
}
Run Code Online (Sandbox Code Playgroud)
根据需要,这是我的v-sync启用代码jay.lee要求:
PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = NULL; // global
...
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");
v_sync_enabled = 0;
if(wglSwapIntervalEXT != NULL){
if(wglSwapIntervalEXT(1) != FALSE){
v_sync_enabled = 1;
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下声明来区分它在我的代码中使用不同的操作:
typedef unsigned int SOMEIDTYPE;
Run Code Online (Sandbox Code Playgroud)
现在,当我创建两个重载函数时:
string something(const unsigned int &val){ ... itoa(val) ... }
string something(const SOMEIDTYPE &val){ ... IDTABLE[val] ... }
Run Code Online (Sandbox Code Playgroud)
我收到错误:error C2084: function 'std::string something(const unsigned int &)' already has a body
那么,我如何重载此函数以区分使用这两种不同的数据类型,并执行如上所示的不同操作?
编辑:重载的原因是我在模板函数内调用此函数。
c++ ×9
opengl ×3
windows ×2
intersection ×1
overloading ×1
stdmap ×1
stdvector ×1
stl ×1
transparency ×1
vbo ×1
vertex-array ×1