草庐IT

DMA2D-GPU

全部标签

c++ - 2D 平台碰撞处理

我正在尝试创建一个2D平台游戏(马里奥类型)游戏,我在正确处理碰撞方面遇到了一些问题。我正在用C++编写这个游戏,使用SDL进行输入、图像加载、字体加载等。我还通过FreeGLUT库结合SDL使用OpenGL来显示图形。我的碰撞检测方法是AABB(轴对齐边界框),这确实是我需要的全部开始。我需要的是一种既能检测碰撞发生在哪一侧又能正确处理碰撞的简单方法。所以,基本上,如果玩家与平台顶部发生碰撞,请将他重新定位到顶部;如果侧面发生碰撞,请将玩家重新定位到物体的侧面;如果底部发生碰撞,请将播放器重新定位在平台下方。我已经尝试了许多不同的方法来做到这一点,例如尝试找到穿透深度并根据穿透深度向

c++ - std::map unique std::less<> 函数,用于 2D 点作为键

好吧,经过四个小时的调试,尽管我很困惑,但我找到了问题的原因......我正在制作一些程序,在std::map中保存一些点并在我的窗口中呈现这些点。但奇怪的是,有些点未能进入map。std::mapm_Props_m;voidAddProp(std::pairp){m_Props_m.insert(p);}structPoint2{unsignedintPoint2::x;unsignedintPoint2::y;//--------Point2::Point2():x(0),y(0){}boolPoint2::operator(constPoint2&b)const{return(x

c++ - 将 3d 位置转换为 2d 屏幕位置

我想将3d位置转换为2d屏幕位置。我看过一个类似的问题:Projectinga3Dpointtoa2Dscreencoordinate,但我完全不明白。我想为了计算2d位置我需要投影矩阵,但我不知道它是如何使用的,除了将一个点转换成位置坐标空间。另外,cam.FieldOfView在OpenGL中是否等于farZ?有人可以帮我完成这个功能吗?参数是否足以计算2d位置?Pos已经是一个相对于相机位置的vector。Vector2*convert(Vector3&pos,Matrix4&projectionMatrix,intscreenWidth,intscreenHeight){flo

c++ - 如何优化 VBO/IBO 以最大化 GPU 缓存使用

我正在使用在CUDA上运行的MarchingCubes算法从体积数据生成网格。我尝试过保存网格并以3种方式渲染它。将一组粗略的三角形保存为连续的顶点数据数组。如果第一次通过,我估计大小,创建一个OpenGLVBO,将其映射到CUDA并按照以下格式将顶点数据写入其中V0x,V0y,V0z,N0x,N0y,N0z,V1x,V1y,V1z,N1x,N1y,N1z,...并使用glDrawArrays()绘制它。RedundantVerticesinVBO,RedundantVerticesperCube,NoIndices.从步骤1中获取网格,使用thrust::sort()和thrust:

c++ - 实际上限制了 Box2D 中的最大速度

我想限制body可以移动的最大速度。问题是,即使我做了类似thisanswer的事情建议:/*afterapplyingforcesfrominputforexample*/b2Vec2vel=body->GetLinearVelocity();floatspeed=vel.Normalize();//normalizesvectorandreturnslengthif(speed>maxSpeed)body->SetLinearVelocity(maxSpeed*vel);例如,如果在限制速度之前我对body施加了一些巨大的力会怎么样?即使线速度暂时被限制为maxSpeed,在下一个

STM32 HAL库定时器触发DMA并口数据传输

代码目的:STM32与FPGA通讯,通过8位并口线进行通讯,16byte的数据在10us之内通过8位并口数据线传给FPGA,FPGA读取该数据。HAL库设置说明:时钟采用80MHz,由于16byte的数据要在10us之内传完,那么10/(16*2)=0.3125us/次,也就是传输频率得≥3.2MHz。定时器设置:为了方便起见,先选用了4MHz的传输频率。80MHz/((1+1)*(9+1))=4MHz,PWM的占空比为5/10=50%关于PWMPWM中Pulse与占空比有关,当定时器计数递增模式下,计数值从0开始,当CNT的值小于CCRx(也就是Pulse),则输出CHPolarity的极性

python - 在 Tensorflow 中添加 GPU Op

我正尝试在this之后松散地向TensorFlow添加一个新操作文档。不同之处在于我正在尝试实现基于GPU的操作。我要添加的操作是来自here的cuda操作(cuda_op.py、cuda_op_kernel.cc、cuda_op_kernel.cu.cc)。我正在尝试在tensorflow之外编译这些并使用tf.load_op_library把它们拉进来。我做了一些更改,所以这是我的文件:cuda_op_kernel.cc#include"tensorflow/core/framework/op.h"#include"tensorflow/core/framework/shape_i

c++ - 仅在我的 2d 引擎中集成 Box2D 碰撞检测?

我在我的引擎中集成了box2d(DebugDraw等),并且我可以在一个世界中放入一些2d正方形/矩形等。我看到了this帖子,用户基本上没有使用世界进行碰撞检测,但是用户没有解释任何关于他如何使用流形(b2Manifold)等的信息。Anotherpost,在cocos2d论坛,(第三条回复下拉到用户Lam)谁能帮我解决这个问题?基本上是想添加碰撞检测而不需要使用b2World等。非常感谢! 最佳答案 您有什么理由不能使用b2World吗?仅仅因为您使用它,并不意味着您必须使用物理模拟,除非您的性能受到严重限制。请参阅此示例,了解

Unity学习之Unity核心(一)2D相关

文章目录1.前言2图片导入概述3图片设置的六大部分3.1纹理类型3.1.1Default3.1.2NormalMap法线贴图格式3.1.3EditorGUIandLegacyGUI3.1.4Sprite3.1.5Cursor自定义光标3.1.6Cookie光源剪影格式3.1.7LightMap光照贴图格式3.1.8SingleChannel纹理只需要单通道的格式3.2纹理形状设置3.2.1参数3.3纹理高级设置3.3.1Non-Powerof2纹理尺寸非2的幂如何处理3.3.2read/writeenable可以通过API修改图片3.3.3MipMap3.3.4StreamingMipMaps

c++ - 如何在没有 CPU 拷贝的情况下上传 GPU 操作生成的 DXT5 压缩像素数据?

所以我想做的是:将使用任何算法(在我的例子中是AES-256)加密的文件加载到GPU内存(使用CUDA)。利用我们现在拥有的所有GPU并行能力解密文件,并将其保留在GPU内存中。现在告诉OpenGL(4.3)内存中有一个纹理需要从DDSDXT5中读取和解压。第3点是我有疑问的地方。由于要在OpenGL中加载压缩的DDSDXT5,必须使用压缩类型(GL_COMPRESSED_RGBA_S3TC_DXT5_EXT)和指向图像数据缓冲区的指针调用openGL::glCompressedTexImage[+2D|3D|2DARB...]。所以,简而言之->有没有办法将GPU内存中的纹理缓冲区地