我正在从本教程学习OpenGL .我的问题是关于一般的规范,而不是关于特定的功能或主题.查看以下代码时:
glGenBuffers(1, &positionBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
Run Code Online (Sandbox Code Playgroud)
我对在设置缓冲区数据之前和之后调用绑定函数的效用感到困惑.由于我对OpenGL和计算机图形学一般缺乏经验,这对我来说似乎是多余的.
手册页说:
glBindBuffer允许您创建或使用命名缓冲区对象.与目标设定为GL_ARRAY_BUFFER,GL_ELEMENT_ARRAY_BUFFER,GL_PIXEL_PACK_BUFFER或GL_PIXEL_UNPACK_BUFFER主叫glBindBuffer和缓冲设置为新的缓冲对象的名称绑定缓存对象名称的目标.当缓冲区对象绑定到目标时,该目标的先前绑定将自动中断.
将某些东西"绑定"到"目标"的概念/效用究竟是什么?
目前我正在使用NSFetchedResultsController来处理表视图.我想知道有没有办法在滑动操作中添加其他按钮,如删除按钮?
我正在考虑将其子类化.但是在帮助文档中找不到与我的问题相关的内容.
提前致谢.
为了证明我做了某事.这是我的代码总和三行.
l=[1,2,3,4,5];
sum=0
for i in l:
sum+=i*i;
print sum
Run Code Online (Sandbox Code Playgroud)
我很好奇,我可以只用一行吗?
我有两个实现的A和B类IEnumerable.
甲使用的GetEnumerator从乙.
B是A类成员.
但是成员B可以为null,所以我添加了null check.
问题也在代码示例的注释中说明.应该在另一个分支中放置什么来阻止foreach null异常?
在下面的示例:
rootNode是乙.
所示功能是A的功能.
B是A的成员.
public IEnumerator<BVHNode<BoundingVolumeClass>> GetEnumerator()
{
if (rootNode != null)
{
return rootNode.GetEnumerator();
}
else
{
return null;
//return null cause foreach null exception
//what can be put here to stop it?
}
}
Run Code Online (Sandbox Code Playgroud) 这是代码。
#include<stdio.h>
int main(int argc,char* argv[])
{
fprintf(stderr,"arg count:%d\n",argc);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当输入以下cmd时:
./a.out x 3 >1.txt //case1
Run Code Online (Sandbox Code Playgroud)
我得到了 argc 3。(在这种情况下,a.out x 和 3)
但是当输入以下cmd时:
./a.out x 3>1.txt //case2
Run Code Online (Sandbox Code Playgroud)
我得到了 argc 2。似乎 3>1 被忽略了。
我预计 argc 是 3 像 case1。
(说明:case1 中 3 和 > 之间有一个空格)
为什么我有第二个案例?以及如何解决?