gpt4 book ai didi

c++ - 代码未编译 - 最终进入 xmemory

转载 作者:太空宇宙 更新时间:2023-11-04 14:08:18 27 4
gpt4 key购买 nike

我刚开始尝试学习如何使用 C++ 编写图形代码。编译线性插值代码时,代码不运行并将 VC++ 发送到 xmemory 文件。没有给出错误或警告,因此我无事可做。我做错了什么?我怀疑问题与我分配 vector 的方式有关,但我的更改都没有奏效。

代码如下:

#include "SDL.h"
#include <iostream>
#include <glm/glm.hpp>
#include <vector>
#include "SDLauxiliary.h"

using namespace std;
using glm::vec3;
using std::vector;

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
SDL_Surface* screen;

void Draw();

void Interpolate( float a, float b, vector<float>& result ) {

int i = 0;
for ( float x=a;x < b+1; ++x )
{
result[i] = x;
i = i + 1;
}

}

void InterpolateVec( vec3 a, vec3 b, vector<vec3>& resultvec ) {
int i = 0;
for (int add=0; add < 4; ++add) {
float count1 = (b[add]-a[add])/resultvec.size() + a[add];
float count2 = (b[add]-a[add])/resultvec.size() + a[add];
float count3 = (b[add]-a[add])/resultvec.size() + a[add];

resultvec[i].x = (count1, count2, count3);
resultvec[i].y = (count1, count2, count3);
resultvec[i].z = (count1, count2, count3);
i = i + 1;
}
}

int main( int argc, char* argv[] )
{
vector<float> result(10); // Create a vector width 10 floats
Interpolate(5, 14, result); // Fill it with interpolated values
for( int i=0; i < result.size(); ++i )
cout << result[i] << " "; // Print the result to the terminal

vector<vec3> resultvec( 4 );
vec3 a(1,4,9.2);
vec3 b(4,1,9.8);
InterpolateVec( a, b, resultvec );
for( int i=0; i<resultvec.size(); ++i )
{
cout << "( "
<< resultvec[i].x << ", "
<< resultvec[i].y << ", "
<< resultvec[i].z << " ) ";
}

screen = InitializeSDL( SCREEN_WIDTH, SCREEN_HEIGHT );
while( NoQuitMessageSDL() )
{
Draw();
}
SDL_SaveBMP( screen, "screenshot.bmp" );

return 0;
}

void Draw()
{

for( int y=0; y<SCREEN_HEIGHT; ++y )
{

for( int x=0; x<SCREEN_WIDTH; ++x )
{
vec3 color(1,0,1);
PutPixelSDL( screen, x, y, color );
}
}

if( SDL_MUSTLOCK(screen) )
SDL_UnlockSurface(screen);

SDL_UpdateRect( screen, 0, 0, 0, 0 );
}

最佳答案

我不能对这个问题发表评论,所以我会写下我的想法作为答案。

    resultvec[i].x = (count1, count2, count3);
resultvec[i].y = (count1, count2, count3);
resultvec[i].z = (count1, count2, count3);

看起来你(或你的库之一)为 float 重载了 operator, 以生成 vec2 并在 vec3。不错的解决方案,但如果我是对的,那么没有理由将每个组件分配给该值,您的代码将类似于:

    resultvec[i] = (count1, count2, count3);

这只是一个假设!我无法编译您的代码并看到错误。

另外我不明白你为什么使用i,它等于add

关于c++ - 代码未编译 - 最终进入 xmemory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988411/

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