gpt4 book ai didi

c++ - 使用 openFrameworks 进行形状操作

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:02 28 4
gpt4 key购买 nike

我是 openFrameworks 新手。我正在学习基本的二维绘图,到目前为止都很棒。我画了一个圆圈:

ofSetColor(0x333333);
ofFill;
ofCircle(100,650,50);

我的问题是如何给圆圈一个变量名,以便我可以在 mousepressed 方法中进行操作?我尝试在 ofCircle 之前添加一个名字

theball.ofSetColor(0x333333);
theball.ofFill;
theball.ofCircle(100,650,50);

但是得到 I 'theball' was not declared in this scope 错误。

最佳答案

正如 razong 所指出的那样,OF 并不是这样运作的。 OF(据我所知)为许多 OpenGL 内容提供了一个方便的包装器。所以你应该使用 OF 调用来影响当前的绘图上下文(而不是考虑带有 sprite 对象或其他东西的 Canvas )。我通常将那种东西整合到我的对象中。所以假设你有一个这样的类......

class TheBall {

protected:

ofColor col;
ofPoint pos;

public:

// Pass a color and position when we create ball
TheBall(ofColor ballColor, ofPoint ballPosition) {
col = ballColor;
pos = ballPosition;
}

// Destructor
~TheBall();

// Make our ball move across the screen a little when we call update
void update() {
pos.x++;
pos.y++;
}

// Draw stuff
void draw(float alpha) {
ofEnableAlphaBlending(); // We activate the OpenGL blending with the OF call
ofFill(); //
ofSetColor(col, alpha); // Set color to the balls color field
ofCircle(pos.x, pos.y, 5); // Draw command
ofDisableAlphaBlending(); // Disable the blending again
}


};

好的,我希望这是有道理的。现在有了这个结构,你可以做类似下面的事情

testApp::setup() {

ofColor color;
ofPoint pos;

color.set(255, 0, 255); // A bright gross purple
pos.x, pos.y = 50;

aBall = new TheBall(color, pos);

}

testApp::update() {
aBall->update()
}

testApp::draw() {
float alpha = sin(ofGetElapsedTime())*255; // This will be a fun flashing effect
aBall->draw(alpha)
}

快乐的编程。快乐的设计。

关于c++ - 使用 openFrameworks 进行形状操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com