我已经看到了以下列方式使用字符串数组的代码.
string *pointer = new string[runtimeAmmount];
Run Code Online (Sandbox Code Playgroud)
我还看到了字符串中的各个字符访问如下.
string aString = "this";
char bString[] = "that";
bString[3] = aString[3];
Run Code Online (Sandbox Code Playgroud)
以上将导致bString等于"thas".这表明字符串实际上是指向第一个字符位置的指针.但是,字符串仍然具有作为"string.c_str()"访问的成员函数,这意味着它本身作为对象不遵循指针的规则.这一切都有用吗?
注意:我原来的问题是不同的,但我想出来输入它.如果有人仍然可以回答我原来的问题只是为了验证我会很感激.我的原始问题如下:如果每个字符串在其整个生命周期中的长度变化,那么如何将字符串数组换成新的?弦不会相互碰撞吗?
我想出的答案是:字符串以某种方式包含指向C风格数组的指针,因此对象占用了一定量的空间.
要么
字符串是STL模板的一种,我还没有花时间去看.
我的代码目前正在发生一些比较奇怪的事情.我在BlackBerry Playbook上运行它,它是OpenGL ES 1.1
编辑4:我删除了我发布的所有内容以简化我的问题.
我拿了代码并将其简化为绘制两个重叠的三角形.这是包含坐标的数组以及包含颜色的数组:
GLfloat vertices[] =
{
// front
175.0f, 200.0f, -24.0f,
225.0f, 200.0f, -24.0f,
225.0f, 250.0f, -24.0f,
// back
200.0f, 200.0f, -25.0f,
250.0f, 200.0f, -25.0f,
250.0f, 250.0f, -25.0f
};
static const GLfloat colors[] =
{
/* front */ 1.0f,0.0f,0.0f,1.0f,1.0f,0.0f,0.0f,1.0f,1.0f,0.0f,0.0f,1.0f, //Red
/* back */ 0.0f,1.0f,0.0f,1.0f,0.0f,1.0f,0.0f,1.0f,0.0f,1.0f,0.0f,1.0f //Green
};
Run Code Online (Sandbox Code Playgroud)
请注意,我的坐标在x方向上为0到1024,在y方向上为0到600,在z方向上为0到-10000.
这是我的设置代码,它反映了这一点:
glClearDepthf(1.0f);
glClearColor(1.0f,1.0f,1.0f,1.0f);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glShadeModel(GL_SMOOTH);
glViewport(0, 0, surface_width, surface_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, surface_width, 0, surface_height, 0, 10000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
Run Code Online (Sandbox Code Playgroud)
我在两个地方都有深度启用,因为我试图排除在选择某种矩阵模式时应该使用它的可能性.
最后这是我的渲染代码:
void render()
{
//Typical render …Run Code Online (Sandbox Code Playgroud)