我遇到了两个曾经很好分开的课程的问题,但现在他们想要结合.
没有太多了解问题的细节,这里是:
我曾经有一个包含3个空位顶点的三角类.
class Triangle
{
Vertex a,b,c ; // vertices a, b and c
} ;
Run Code Online (Sandbox Code Playgroud)
程序中有许多Triangle实例,因此每个实例都保留了自己的顶点副本.构件的功能,例如getArea(),getCentroid()等写在类Triangle,和由于每个Triangle实例具有顶点A,B和C的副本,寻找区域或质心对其他类没有依赖性.应该是!
然后,由于其他原因,我想转移到顶点数组/索引缓冲区样式表示.这意味着所有顶点都存储在一个位于Scene对象中的单个数组中,并且每个Triangle顶点仅保留顶点的REFERENCES Scene,而不保留顶点本身的副本.起初,我尝试切换指针:
class Scene
{
std::vector<Vertex> masterVertexList ;
} ;
class Triangle
{
Vertex *a,*b,*c ; // vertices a, b and c are pointers
// into the Scene object's master vertex list
} ;
Run Code Online (Sandbox Code Playgroud)
(如果您对这些好处感到疑惑,我之所以这样做是因为大多数情况下共享顶点的三角形.如果*a移动,那么使用该顶点的所有三角形都会自动更新).
这本来是一个非常好的解决方案!但它没有可靠的工作,因为std :: vector使指针无效,我在类中使用std :: vector作为主顶点列表Scene.
所以我不得不使用整数:
class Triangle
{
int …Run Code Online (Sandbox Code Playgroud) 我想加载一个包含RGBA 8888格式纹理的字节数组.
OpenGL ES文档提供了4个常量:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4和GL_UNSIGNED_SHORT_5_5_5_1.
在常规OpenGL上,有一个符合我需要的值GL_UNSIGNED_INT_8_8_8_8 - 数字被解释为:
例如,如果internalFormat是GL_R3_G3_B2,则要求纹素为3位红色,3位绿色和2位蓝色.
所以GL_UNSIGNED_INT_8_8_8_8必须是8位R,8位G和8位B和8位A.
但GL_UNSIGNED_BYTE在ES平台上意味着什么?它将如何解释?(R,G,B和A有多少位?)
所以,我注意到调用array[:-1]将克隆数组.
假设我有一个包含3000个元素的大型数组.当我迭代它时,我不希望它被克隆!我只想迭代到最后一个.
for item in array[ :-1 ] :
# do something with the item
Run Code Online (Sandbox Code Playgroud)
所以我必须诉诸一个反变量,
for c in range( 0, len( array ) - 1 ) :
# do something with array[ c ]
Run Code Online (Sandbox Code Playgroud)
或者有没有办法使/ array[:-1]语法有效?
对于我的银行账户,我只能访问18个月的历史记录.
要访问旧帐户历史记录,您必须为每个旧帐户支付一定的金额.为什么银行这样做?当我们获得更大的硬盘和更便宜的存储时,这种做法不应该消失吗?
我正在审查一些代码,我看到了很多这样的代码:
class Foo
{
public:
Foo()
{
// 'nuffin
}
void init()
{
// actual construction code
}
} ;
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一优势是,如果你在不使用指针的情况下创建一个Foo,并且想要将其构造代码延迟到以后,那么你可以.
这是一个好主意还是一个坏主意?
来自我的webapp的XML响应都有要添加到页面的HTML,有些还有要运行的脚本.
我正试图从我的webapp发回XML,如:
<?xml version="1.0"?>
<doc>
<html-to-insert>
<![CDATA[<p>add me to the page</p>]]>
</html-to-insert>
<script>
<![CDATA[ alert('execute me'); ]]>
</script>
</doc>
Run Code Online (Sandbox Code Playgroud)
我现在正在做的是抢购<html-to-insert>和<script>CDATA,将html插入页面并进行评估<script>.
我正在寻找对我的方法的批评.任何人的建议?
当我使用黑莓模拟器时,当我与虚拟设备交互时,屏幕似乎没有重新绘制.我必须最小化/恢复屏幕的模拟器应用程序以重新绘制,但它应该自己重新绘制.
这只发生在我的Windows 7机器上,有什么想法吗?
我看到了这个:
// thread is a member of this class
synchronized( this.thread )
{
this.thread.running = false;
this.thread.notifyAll(); // Wake up anything that was .waiting() on
// the thread
this.thread = null; // kill this thread reference.
// can you do that in a synchronized block?
}
Run Code Online (Sandbox Code Playgroud)
是否可以设置thread=nullwhile仍然保持锁定?
我在一些BB代码中找到了这个金块.
在着色器模型 3.0 中,我很确定这是否定的,但我还是想问这个,
在着色器模型 5.0 中,您可以在顶点着色器中对纹理进行采样吗?
如果我想为每个顶点提供大量补充信息,我有哪些选择?
编辑:显然可以进行顶点纹理提取,如此处所示,但是当我在 hlsl 着色器模型 5 程序中尝试它时,出现错误
错误 X4532:无法将表达式映射到 vs_5_0 指令集
说你写的是一个非常糟糕的课程
template <typename T>
class IntFoo
{
T container ;
public:
void add( int val )
{
// made an assumption that
// T will have a method ".push_front".
container.push_front( val ) ;
}
} ;
Run Code Online (Sandbox Code Playgroud)
忽略一个事实,即类假定容器将是something<int>,而是注意这个事实
IntFoo< list<int> > listfoo ;
listfoo.add( 500 ) ; // works
IntFoo< vector<int> > intfoo;
//intfoo.add( 500 ) ; // breaks, _but only if this method is called_..
Run Code Online (Sandbox Code Playgroud)
一般来说,可以像这样调用参数化类型的成员函数吗?这是不好的设计吗?这个(反)模式有名字吗?
c++ ×2
banking ×1
blackberry ×1
class ×1
constructor ×1
coupling ×1
direct3d11 ×1
hlsl ×1
java ×1
javascript ×1
jquery ×1
json ×1
list ×1
members ×1
opengl-es ×1
performance ×1
python ×1
templates ×1
textures ×1
windows-7 ×1
xml ×1