小编ult*_*tus的帖子

我应该以什么顺序将我的顶点发送到OpenGL以进行剔除

我正在学习一个3D opengl的地方,而且相当不错,我现在有一个漂亮的相机和一些简单的立方体物体.目前正在使用顶点数组,但我在这里很快就交换到了VBO.我只是想尝试剔除,但是我不确定我应该指定我的顶点的顺序,现在这就是我正在做的事情:

void cube::update_verts(){
GLushort cur=0;

///back face
verts[cur++]=x; verts[cur++]=y; verts[cur++]=z;
verts[cur++]=x+sx; verts[cur++]=y; verts[cur++]=z;
verts[cur++]=x+sx; verts[cur++]=y+sy; verts[cur++]=z;
verts[cur++]=x; verts[cur++]=y+sy; verts[cur++]=z;

///right face
verts[cur++]=x+sx; verts[cur++]=y+sy; verts[cur++]=z;
verts[cur++]=x+sx; verts[cur++]=y; verts[cur++]=z;
verts[cur++]=x+sx; verts[cur++]=y; verts[cur++]=z+sz;
verts[cur++]=x+sx; verts[cur++]=y+sy; verts[cur++]=z+sz;

///top face
verts[cur++]=x+sx; verts[cur++]=y+sy; verts[cur++]=z;
verts[cur++]=x; verts[cur++]=y+sy; verts[cur++]=z;
verts[cur++]=x; verts[cur++]=y+sy; verts[cur++]=z+sz;
verts[cur++]=x+sx; verts[cur++]=y+sy; verts[cur++]=z+sz;

///front face
verts[cur++]=x; verts[cur++]=y; verts[cur++]=z+sz;
verts[cur++]=x+sx; verts[cur++]=y; verts[cur++]=z+sz;
verts[cur++]=x+sx; verts[cur++]=y+sy; verts[cur++]=z+sz;
verts[cur++]=x; verts[cur++]=y+sy; verts[cur++]=z+sz;

///bottom face
verts[cur++]=x+sx; verts[cur++]=y; verts[cur++]=z;
verts[cur++]=x; verts[cur++]=y; verts[cur++]=z;
verts[cur++]=x; verts[cur++]=y; verts[cur++]=z+sz;
verts[cur++]=x+sx; verts[cur++]=y; verts[cur++]=z+sz;

///left face
verts[cur++]=x; verts[cur++]=y+sy; …
Run Code Online (Sandbox Code Playgroud)

c++ opengl sdl

27
推荐指数
2
解决办法
2万
查看次数

按位检查标志是否存在

是否有一种方法通常用于检查int /其他数据类型中是否存在标志?我想出这样的事情:

if ((host&flagtocheckfor)==flagtocheckfor)
Run Code Online (Sandbox Code Playgroud)

哪个工作正常 - 但是这种常见的设置标志的方法是通常检查标志的方式吗?还是有更简洁的方法?

language-agnostic flags bit-manipulation

17
推荐指数
1
解决办法
1万
查看次数

select()最大套接字

只是更异步的东西!

好吧,所以我现在有一个工作异步套接字程序用于我的主要聊天应用程序,它的工作非常好!不过我有一个问题..

使用select()时,我可以在每个集合中使用的文件描述符的最大数量是多少?我读过有关1024的限制......

如果该限制确实是硬编码的并且我不能将该限制FD_SETSIZE更高,那么一旦达到该限制,我是否应该生成另一个线程?或者是其他东西?这甚至是一个问题吗?

c++ sockets select asynchronous

5
推荐指数
1
解决办法
6939
查看次数

线程等待父级

我正在为我的ubuntu服务器实现一个简单的线程池机制(对于我的多客户端匿名聊天程序),我需要让我的工作线程休眠,直到需要执行一个作业(以函数指针和参数的形式) .

我现在的系统正在窗外.我(工作者线程)询问经理是否有工作,如果没有睡眠5ms.如果有,请将作业添加到工作队列并运行该功能.可怜的循环浪费.

什么我喜欢做的是做一个简单的事件性的系统.我正在考虑使用互斥体向量(每个工作一个),并在创建时将传入的互斥锁作为参数传递.然后在我的经理类(保存并分发作业)中,每当创建一个线程时,锁定互斥锁.当需要执行作业时,解锁下一个互斥锁,等待它被锁定和解锁,并重新锁定它.但是我想知道是否有更好的手段来实现这一目标.


tldr; 所以我的问题是这个.什么是使线程等待管理类工作的最有效,最有效和最安全的方法?轮询我应该考虑的技术(一次超过1000个客户端),互斥锁是否正常?还是有其他技术?

c++ sockets linux mutex pthreads

4
推荐指数
1
解决办法
1399
查看次数

抓取程序的控制台输出

我正在为一家公司创建一个网络管理程序,我正在做一些合同工作(我认为无关紧要)

作为该计划的一部分,我想有一个控制台/ telnet(类型)克隆.我有一个工作目录系统,我可以在其中读取目录中的所有文件,并更改目录.我也有一个简单的FTP协议设置.但是,我想以编程方式随意地使用标准输入/输出程序对不同的程序说话.我并不反对DLL注入技术和其他方法,因为这是一个良性的程序.如果可能的话,如果我可以轻松直接使用控制台,那将是非常棒的.(system()可能会工作,但这不允许继续通信或读回输出)

到目前为止,我正在考虑抓住PATH环境变量并将其用于std命令(ipconfig,netstat等)我的网络库使通信变得简单,但我只是不确定如何与程序的控制台进行交互......

TL; DR:

程序之间是否有任何预定义的标准控制台通信方式?

c++ sockets windows console

3
推荐指数
2
解决办法
4041
查看次数

附加UIWebView

好吧,所以我正在为iPhone制作一个简单的聊天应用程序,我有一些运气,它运行良好,看起来很神奇但是我有一些问题,一个这样的问题是我向用户显示富文本的方式. .

目前我有一个荒谬的系统,就像这样

{发送数据/接收数据 - >添加到变量allText(一切都在html中)

在后台加载带有allText的webview(有两个可用),当它完成加载时,使其可见.(对于那些熟悉游戏编程的人来说,这基本上是双缓冲)

}

我被告知您可以使用JavaScript动态地将html添加到webview中.我试了一下,然后悲惨地失败了.从来没有使用过javascript我不知道整个系统是如何工作的,而且我现在的系统工作得很好,所以我宁愿坚持下去,也不愿学习整个脚本语言.

所以我的问题是这个.我怎么能写一个函数(在obj-c中)来附加一个带有富文本的uiwebview?

我已经尝试了几次,但我不确定我放置标签的位置,或者我是否需要标签.我使用js将uiwebview滚动到已加载数据的底部,但这是一个我无法制作的预制函数.

-(void) addToWebView: (NSString *) toAdd{
NSString *java = [NSString stringWithFormat: @"javascript : %@",toAdd];
[classWebView stringByEvaluatingJavaScriptFromString:java];
}
Run Code Online (Sandbox Code Playgroud)

^这就是我认为应该看起来的样子,我只是不知道该怎么用于javascript!

javascript iphone xcode objective-c uiwebview

2
推荐指数
1
解决办法
1612
查看次数

内联ASM jmp到新内存

所以我想从文件中加载一组汇编指令,然后执行这些指令.

要么

我想从文件中再次加载已编译的机器代码(非exe)

我的想法:

到目前为止,我已经学会了足够的内联asm来轻松使用c/c ++变量.

  asm volatile (
    "mov     %1, %%ecx;" // yes unnecessary, I know
    "add     %2, %%ecx;" // I know they're already loaded in a register
    "mov     %%ecx ,%0 ;"// just demonstrating what I've learned
    :"=r"(address)
    :"r"(address),"r"(offset)
    :"%ecx"
  );
Run Code Online (Sandbox Code Playgroud)

我已经开始学习操作码,我已经获得了一些x86手册.我(在某种程度上)了解硬件如何在基本级别上工作.

我知道我可以使用带有fstream的c ++将文件加载到内存中,我想知道是否有一种方法可以从该空间执行内存,或者它是否在内存的不可执行部分或某些内容中.

原因:

目前有几个原因我想这样做.我希望为我的程序创建一个基本的 encyption,用于运行程序的简单键.虽然我可以轻松地加密和解密实际代码,但我希望程序在每次运行时都不加密,并且永远不会存储在硬盘上.我知道几个问题,但是我对这样做非常感兴趣.

最后问题:

我可以从asm中的c ++程序中的内存空间执行机器代码吗?

是必要的吗?

是否有其他方法可以更有效地完成此任务,如果是,那些方法是什么?

我正在阅读我正在制作的鼠标共享程序的一些DLL注入(两台计算机彼此相邻,都有显示器,但是你只有一个鼠标/键盘.我想知道我在哪里可以找到关于这个主题的一些很好的资源?谷歌一直很有帮助,但我对一些IRC频道或类似的东西很感兴趣.无论如何,感谢阅读!

c++ inline-assembly

2
推荐指数
1
解决办法
1336
查看次数

基于额外参数对矢量进行排序

我有一个指向对象指针向量的指针

vector<object*>* vec;
Run Code Online (Sandbox Code Playgroud)

这恰好保存了当前可能与另一个对象发生碰撞的对象的信息.这很棒 - 但是我需要按照与根对象的距离来对这个向量进行排序,我不知道最好的方法.

目前,该对象对另一个结构的另一个临时向量进行排序

struct tempsort{
int distanceFromObject;
object* obj;
}
Run Code Online (Sandbox Code Playgroud)

使用这样的函数:

bool sorter(tempsort* first, tempsort* second){
  return first->distanceFromObject < second->distanceFromObject;
}
Run Code Online (Sandbox Code Playgroud)

执行:

vector<tempsort*> tosort;
for (int a = 0; a < vec->size(); a++){
  tosort.push_back(new tempsort);
  tempsort.distanceFromObject = distanceBetweenObjects(host,(*vec)[a]);
  tempsort.obj=(*vec)[a];
}

sort(tempsort.begin(),tempsort.end(),sorter);
Run Code Online (Sandbox Code Playgroud)

该对象现在可以解决冲突.

Tempsort的对象现在已被删除.

但是我真的想要对原始矢量进行排序,而不是创建这个临时矢量.那可能吗?如果是这样,怎么样?

c++ sorting vector

1
推荐指数
1
解决办法
698
查看次数