小编jma*_*erx的帖子

访问void*的元素?

我有一个void指针,想要从中访问元素.我如何将void*转换为无符号字节指针,以便我可以访问其元素(我知道它实际上是无符号字节).谢谢

使用C++

c++

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

将向量钳位到最小值和最大值?

我遇到了这个: t = Clamp(t/d, 0, 1) 但我不确定如何对向量执行此操作。如果有人正在编写自己的向量实现,那么钳位向量的步骤是什么?

谢谢

钳制向量到最小值和最大值

前任:

pc = # the point you are coloring now
p0 = # start point
p1 = # end point
v = p1 - p0
d = Length(v)
v = Normalize(v) # or Scale(v, 1/d)

v0 = pc - p0

t = Dot(v0, v)
t = Clamp(t/d, 0, 1)

color = (start_color * t) + (end_color * (1 - t))
Run Code Online (Sandbox Code Playgroud)

c c++ algorithm clamp

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

创建操作系统关闭按钮?(WinAPI的)

我想创建一个基本上是Windows关闭按钮的按钮。我该怎么办?我想避免自己绘制此图,因为我希望它看起来像Windows关闭按钮的那个版本。Firefox的选项卡执行以下操作。谢谢

c c++ user-interface winapi

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

防止透支的技术(OpenGL)

我画了很多半透明的多边形.我的场景是2D并使用2f verticies.我无法使用深度缓冲区,因为它不会因为alpha混合而有所帮助.还有哪些其他技术可以减少透支,因为这是我的应用程序瘫痪,而不是多边形计数,因为我使用VBO.

c c++ opengl

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

这是std :: vector的正常行为吗?

我有一个名为OGLSHAPE的类的std :: vector.

每个形状都有一个SHAPECONTOUR结构的向量,它有一个float向量和一个double向量的向量.它还有一个大纲结构的向量,其中包含一个float向量.

最初,我的程序使用8.7 MB的ram启动.我注意到,当我开始填充这些时,加上双打和浮子,记忆得到很快,然后稳定下来.当我清除OGLSHAPE向量时,仍然使用大约19MB.然后,如果我推出大约150多个形状,然后清除那些,我现在使用大约19.3MB的内存.从逻辑上讲,如果它第一次从8.7变为19,那么下一次它会达到30左右.我不确定它是什么.我以为是内存泄漏,但现在我不确定.我所做的只是将数字推入std :: vectors,没有别的.所以我希望能回忆起我的全部记忆.什么可能导致这个?

谢谢

*编辑,好吧它的内存碎片分配了很多小东西,怎么能解决?

c++ memory vector

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

std :: vector很慢?

这就是我正在做的事情.

我有一个我实例的类,它有一个std :: vector.

当我第一次实例化这个类时,这个std :: vector是空的.

我使用它的方式是指数地添加它并清除.例如:

添加一个数字,清除向量:

添加2个数字,清除向量:

添加3个数字,清除矢量,

添加4个数字,清除矢量.......

std :: vector是我做我正在做的事情的最佳方式吗?我试图在构造函数中保留(100,000),但这没有帮助.

我的使用可能有更好的容器吗?

谢谢

c++ performance vector

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

在某个阈值后,Std :: vector填充时间从0ms到16ms?

这就是我正在做的事情.我的应用程序在拖动时从用户获取点并实时显示填充多边形.

它基本上在MouseMove上添加了鼠标位置.这一点是一个USERPOINT并且具有更好的句柄,因为最终我会做得更好,这就是为什么我必须将它们转换为向量.

所以基本上是MousePos - > USERPOINT.USERPOINT被添加到a std::vector<USERPOINT>.然后在我的UpdateShape()函数中,我这样做:

DrawingPoints定义如下:

std::vector<std::vector<GLdouble>> DrawingPoints;


Contour[i].DrawingPoints.clear();



 for(unsigned int x = 0; x < Contour[i].UserPoints.size() - 1; ++x)
         SetCubicBezier(
             Contour[i].UserPoints[x],
             Contour[i].UserPoints[x + 1],
             i);
Run Code Online (Sandbox Code Playgroud)

SetCubicBezier()目前看起来像这样:

void OGLSHAPE::SetCubicBezier(USERFPOINT &a,USERFPOINT &b, int &currentcontour )
{
std::vector<GLdouble> temp(2);

    if(a.RightHandle.x == a.UserPoint.x && a.RightHandle.y == a.UserPoint.y 
        && b.LeftHandle.x == b.UserPoint.x && b.LeftHandle.y == b.UserPoint.y )
    {

        temp[0] = (GLdouble)a.UserPoint.x;
        temp[1] = (GLdouble)a.UserPoint.y;

        Contour[currentcontour].DrawingPoints.push_back(temp);

        temp[0] = (GLdouble)b.UserPoint.x;
        temp[1] = (GLdouble)b.UserPoint.y;


        Contour[currentcontour].DrawingPoints.push_back(temp);

    }
    else
    {
         //do cubic bezier calculation
        }
Run Code Online (Sandbox Code Playgroud)

因此,由于立方贝塞尔的原因,我需要将USERPOINTS设置为GlDouble …

c++ performance vector

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

创建使用您构建的其他功能的函数是一种好习惯吗?

创建使用您构建的其他函数的函数是一种好习惯吗?

我想知道这是否有好处,因为它使代码不那么便携.

谢谢

language-agnostic portability function

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

跨平台替代Winsock?

我基本上正在寻找一种跨平台的方式来做基本的事情,比如接受连接和发送和接收数据.什么库适用于Linux,Windows和Mac?

谢谢

c c++ api networking

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

结构如何在Java中运行?

在c ++中,人们可以简单地做这样的事情:

struct GraphObject {
Color color;
double value;
String name;
};
Run Code Online (Sandbox Code Playgroud)

但是在Java中,我不能简单地这样做,我只看到为此创建一个类作为选项.我不喜欢的是那时我需要拖动GraphObject.java和Graph.java(因为Graph将保存GraphObject的ArrayList.有没有办法将对象类放入Graph.java或者这根本不可能/不好的做法?

谢谢

java

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