我想知道我可以在GPU上发送的线程/线程组的"网格".我正在使用Direct Compute,所以我将使用该API给出一个具体的例子.例如,如果我调用Dispatch(2,2,2),我理解它总共调度2x2x2 = 8个线程组.但是,如果我调用Dispatch(8,1,1),它还调度8x1x1 = 8个线程组,那有什么区别?有任何性能差异吗?
PS与GPU上的线程相同的问题.在计算(.hlsl)文件中声明的numthreads(2,2,2)和numthreads(8,1,1)之间的区别是什么?
任何帮助,将不胜感激.
我正在尝试将只读数据的“视图”发送到另一个线程进行处理。基本上主线程确实工作,不断更新一组数据。每当发生更新时,主线程应该将更新的数据发送到其他线程,在那里它们将以只读方式处理它。我不想复制数据,因为它可能非常大。(无论如何,主线程还在内存中保留数据的“缓存”。)
我可以用 来实现这一点Arc<RwLock<T>>
,其中T
是我的数据结构。
但是,没有什么可以阻止侧线程更新数据。侧线程可以简单地调用lock()
和写入数据。
我的问题是,是否存在类似于RwLock
它的所有者/创建者具有唯一写入访问权限,但所有其他实例都具有只读访问权限的情况?这样,我将在编译时检查可能通过侧线程意外更新数据而发生的任何逻辑错误。
关于这些问题:
上述问题建议用Arc<Mutex<T>>
or来解决Arc<RwLock<T>>
,这都可以。但它仍然不能只执行一个编写者的编译时操作。
另外:crossbeam
orrayon
的作用域线程在这里没有帮助,因为我希望我的副线程比我的主线程寿命更长。
我想将整数值(int)转换为std :: wstring.做这个的最好方式是什么?我正在开发Windows手机,所以我宁愿避免使用外部库(例如boost :: lexical_cast).我正在寻找一些简单的东西,最好是一行代码,只是将int分配给wstring.
任何帮助,将不胜感激.
我已经使用Navigation Drawer Fragment和MainActivity的模板实现设置了一个新项目.
它为我提供了以下相关方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
token = intent.getStringExtra(EXTRA_TOKEN);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mNavigationDrawerFragment.activityMain = this;
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
}
Run Code Online (Sandbox Code Playgroud)
我的MainActivity由一个启动活动启动,该活动通过EXTRA_TOKEN获取保存的访问令牌.
这是MainAcitivity中导航抽屉项目选择侦听器的覆盖:
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
onSectionAttached(position + 1);
switch(position) {
case 0:
fragmentManager.beginTransaction()
.replace(R.id.container, FeedFragment.newInstance(token, ""))
.commit();
break;
case 1:
fragmentManager.beginTransaction()
.replace(R.id.container, PeopleFragment.newInstance("", ""))
.commit();
break; …
Run Code Online (Sandbox Code Playgroud) java android android-intent android-fragments navigation-drawer
我现在有点困惑,只是想请大家帮我弄清楚一些想法.
在HLSL着色器(例如计算着色器)中,我可以声明StructuredBuffer sb,对吗?我是否必须将其绑定到寄存器,例如:register(t0)?
从应用程序端,我可以调用CSSetShaderResources(...).第一个参数(StartSlot),是否与寄存器声明中"t"后面的小数字有关?
如果我将StartSlot设置为0(例如),并将第二个参数设置为2.我告诉API我将绑定两个着色器资源视图,一个在寄存器(t0)中,另一个在寄存器中(t1)?
如果我声明Texture2D tex [10]:register(t0)我可以通过调用CSSetShaderResources(0,10,...)来设置它.这是否意味着寄存器(t0~t9)都用完了?
对于这样一个问题的"快速解雇"感到抱歉,但我真的很困惑,我的一些测试似乎给出了令人难以置信的结果......
任何帮助,将不胜感激.
我正在尝试使用C++ directx 11 SDK一次渲染到两个纹理.我希望一个纹理包含结果图像的每个像素的颜色(我在渲染3D场景时通常在屏幕上看到的颜色),另一个纹理包含每个像素和深度的法线(3个浮点数用于法线和1个浮点数)深度).现在,我能想到的是创建两个渲染目标并将第一遍渲染为颜色,第二遍分别传递法线和深度到每个渲染目标.然而,这似乎是浪费时间,因为我可以在第一遍中获得每个像素的颜色,法线和深度的信息.那么有没有办法用像素着色器以某种方式输出两个纹理?
任何帮助,将不胜感激.
PS我在想象像素着色器中的RWTexture2D或RWStructuredBuffer.一点背景:我需要两个图像在计算着色器中进一步处理.这引出了同步的一个侧面问题:由于像素着色器(与计算着色器不同)一次一个地写入每个像素,我如何知道像素着色器何时完成并告诉计算着色器开始图像后处理?
我正在构建自己的四元数相机.据我所知,你只需要一个四元数来完全指定相机的方向(如果我错了,请纠正我).那么,我将如何创建视图矩阵?顺便说一下,我正在使用C++作为编程语言.
任何帮助,将不胜感激.
我有一个像素着色器,我想根据我的世界空间坐标来计算每个像素的位置。我该怎么做?我需要什么?
我有一个ps_input
具有float4位置的结构:SV_POSITION
。我假设这很重要,但是存储在里面的值似乎有点可笑。
我似乎无法弄清楚它们之间的关系。例如,如果一个像素是2d,那么为什么它具有w分量或z分量呢?
我正在使用DirectX
,并且像素着色器在中HLSL
。C++
作为我在CPU上的编程语言。
任何帮助,将不胜感激。
我和房间之间有一对多的关系:
Room | User
1 | 1
1 | 2
1 | 4
2 | 1
2 | 2
2 | 3
2 | 5
3 | 1
3 | 3
Run Code Online (Sandbox Code Playgroud)
给定一个用户列表,例如1,3,确定哪个房间完全/完全由他们填充的最有效方法是什么?所以在这种情况下,它应该返回3号房间,因为虽然它们都在2号房间,但是2号房间也有其他居住者,这不是一个"完美"的契合.
我可以想到几个解决方案,但我不确定效率.例如,我可以按用户(按升序排序)分组连接组,这将为我提供逗号分隔的字符串,如"1,2,4","1,2,3,5"和"1, 3" .然后我可以命令我的输入列表升序并寻找与"1,3"的完美匹配.
或者我可以计算一个房间中的用户总数并包含用户1和3.然后,我将选择具有等于2的用户数的房间.
注意我想要最有效的方式,或者至少可以扩展到数百万用户和房间.每个房间将有大约25个用户.我想要考虑的另一件事是如何将此列表传递给数据库.我应该通过连接AND userid = 1 AND userid = 3 AND userid = 5
等构建查询吗?或者有没有办法将值作为数组传递给存储过程?
任何帮助,将不胜感激.
我有一段文本可能包含一些纯文本链接,或一些实际链接的链接.
例如:
Posting a link: http://test.com, posting an image <img src="http://test.com/2.jpg" />. Posting an actual A tag: <a href="http://test.com/test.html">http://test.com/test.html</a>
Run Code Online (Sandbox Code Playgroud)
我需要从这段文本中删除未格式化的链接.所以任何正则表达式将匹配第一种情况,但不是第二种或第三种情况,因为它们已经是格式良好的链接.
我已经设法用这个正则表达式删除了所有链接:((http:|https:)\/\/[a-zA-Z0-9&#=.\/\-?_]+)
但是,我仍然无法区分这些情况.
这需要在javascript中,所以我不认为允许负面的lookbehind.
任何帮助,将不胜感激.
编辑:我正在尝试将未编辑的链接包装在一个标签中.
c++ ×3
directx ×3
hlsl ×2
pixel-shader ×2
android ×1
camera ×1
database ×1
directx-11 ×1
dispatch ×1
gpu ×1
html ×1
java ×1
javascript ×1
jquery ×1
math ×1
mysql ×1
php ×1
position ×1
quaternions ×1
regex ×1
rust ×1
shader ×1
string ×1
threadgroup ×1