working on web
This commit is contained in:
parent
fa3a4c66c9
commit
db4254e205
@ -103,10 +103,10 @@ namespace ZL {
|
||||
});
|
||||
uiManager.setSliderCallback("velocitySlider", [this](const std::string& name, float value) {
|
||||
int newVel = roundf(value * 10);
|
||||
/*if (newVel > 2)
|
||||
if (newVel > 2)
|
||||
{
|
||||
newVel = 2;
|
||||
}*/
|
||||
}
|
||||
|
||||
if (newVel != Environment::shipState.selectedVelocity) {
|
||||
onVelocityChanged(newVel);
|
||||
|
||||
@ -816,11 +816,16 @@ namespace ZL
|
||||
|
||||
// defaultColor shader likely uses vColor (vec3), но нам нужен alpha.
|
||||
// У тебя в Renderer есть RenderUniform4fv, но шейдер может брать vColor.
|
||||
// Поэтому: сделаем ColorData vec3, а alpha дадим через uniform uColor, если есть.
|
||||
// Если в defaultColor нет uniform uColor — тогда alpha будет 1.0.
|
||||
// Для совместимости: кладём RGB, alpha будем задавать uniform'ом отдельно.
|
||||
// Поэтому: сделаем ColorData vec3, а alpha будем задавать uniform'ом отдельно.
|
||||
Vector3f rgb{ rgba.x(), rgba.y(), rgba.z() };
|
||||
v.ColorData = { rgb, rgb, rgb, rgb, rgb, rgb };
|
||||
|
||||
// defaultColor vertex shader expects vNormal and vTexCoord; provide valid values
|
||||
// so WebGL/GLSL doesn't get NaN from normalize(vec3(0,0,0)).
|
||||
const Vector3f n{ 0.f, 0.f, 1.f };
|
||||
v.NormalData = { n, n, n, n, n, n };
|
||||
const Vector2f uv{ 0.f, 0.f };
|
||||
v.TexCoordData = { uv, uv, uv, uv, uv, uv };
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -915,7 +920,7 @@ namespace ZL
|
||||
|
||||
// 4) Настройки стиля
|
||||
Eigen::Vector4f enemyColor(1.f, 0.f, 0.f, 1.f); // красный
|
||||
float thickness = 2.0f; // толщина линий (px)
|
||||
float thickness = 10.0f; // толщина линий (px)
|
||||
float z = 0.0f; // 2D слой
|
||||
|
||||
// 5) Если цель в кадре: рисуем скобки
|
||||
@ -959,12 +964,14 @@ namespace ZL
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
renderer.shaderManager.PushShader("defaultColor");
|
||||
renderer.PushProjectionMatrix((float)Environment::width, (float)Environment::height, 0.f, 1.f);
|
||||
renderer.PushMatrix();
|
||||
renderer.LoadIdentity();
|
||||
|
||||
<<<<<<< Updated upstream
|
||||
// рисуем кружок упреждения (только если есть решение)
|
||||
if (haveLead) {
|
||||
float leadNdcX, leadNdcY, leadNdcZ, leadClipW;
|
||||
@ -987,6 +994,10 @@ namespace ZL
|
||||
}
|
||||
}
|
||||
}
|
||||
=======
|
||||
renderer.EnableVertexAttribArray("vPosition");
|
||||
|
||||
>>>>>>> Stashed changes
|
||||
|
||||
// верх-лево: горизонт + вертикаль
|
||||
drawBar(left + cornerLen * 0.5f, top, cornerLen, thickness);
|
||||
@ -1004,6 +1015,9 @@ namespace ZL
|
||||
drawBar(right - cornerLen * 0.5f, bottom, cornerLen, thickness);
|
||||
drawBar(right, bottom + cornerLen * 0.5f, thickness, cornerLen);
|
||||
|
||||
renderer.DisableVertexAttribArray("vPosition");
|
||||
|
||||
|
||||
renderer.PopMatrix();
|
||||
renderer.PopProjectionMatrix();
|
||||
renderer.shaderManager.PopShader();
|
||||
@ -1069,6 +1083,11 @@ namespace ZL
|
||||
v.PositionData = { a, b, c };
|
||||
Vector3f rgb{ enemyColor.x(), enemyColor.y(), enemyColor.z() };
|
||||
v.ColorData = { rgb, rgb, rgb };
|
||||
// defaultColor vertex shader expects vNormal and vTexCoord (avoids NaN on WebGL).
|
||||
const Vector3f n{ 0.f, 0.f, 1.f };
|
||||
v.NormalData = { n, n, n };
|
||||
const Vector2f uv{ 0.f, 0.f };
|
||||
v.TexCoordData = { uv, uv, uv };
|
||||
hudTempMesh.AssignFrom(v);
|
||||
renderer.DrawVertexRenderStruct(hudTempMesh);
|
||||
};
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
namespace ZL {
|
||||
void WebSocketClientEmscripten::Connect(const std::string& host, uint16_t port) {
|
||||
// Формируем URL. Обратите внимание, что в Web часто лучше использовать ws://localhost
|
||||
std::string url = "ws://" + host + ":" + std::to_string(port);
|
||||
//std::string url = "wss://api.spacegame.fishrungames.com";
|
||||
//std::string url = "ws://" + host + ":" + std::to_string(port);
|
||||
std::string url = "wss://api.spacegame.fishrungames.com";
|
||||
|
||||
EmscriptenWebSocketCreateAttributes attr = {
|
||||
url.c_str(),
|
||||
|
||||
@ -896,40 +896,64 @@ namespace ZL {
|
||||
static const std::string vTexCoord("vTexCoord");
|
||||
static const std::string vPosition("vPosition");
|
||||
|
||||
//glBindVertexArray(VertexRenderStruct.vao->getBuffer());
|
||||
|
||||
//Check if main thread, check if data is not empty...
|
||||
// On WebGL (and when not using VAO), vertex attribute arrays must be explicitly
|
||||
// enabled before drawing. Desktop with VAO can rely on stored state; WebGL cannot.
|
||||
if (VertexRenderStruct.data.NormalData.size() > 0)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.normalVBO->getBuffer());
|
||||
VertexAttribPointer3fv(vNormal, 0, NULL);
|
||||
EnableVertexAttribArray(vNormal);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableVertexAttribArray(vNormal);
|
||||
}
|
||||
if (VertexRenderStruct.data.TangentData.size() > 0)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.tangentVBO->getBuffer());
|
||||
VertexAttribPointer3fv(vTangent, 0, NULL);
|
||||
EnableVertexAttribArray(vTangent);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableVertexAttribArray(vTangent);
|
||||
}
|
||||
if (VertexRenderStruct.data.BinormalData.size() > 0)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.binormalVBO->getBuffer());
|
||||
VertexAttribPointer3fv(vBinormal, 0, NULL);
|
||||
EnableVertexAttribArray(vBinormal);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableVertexAttribArray(vBinormal);
|
||||
}
|
||||
if (VertexRenderStruct.data.ColorData.size() > 0)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.colorVBO->getBuffer());
|
||||
VertexAttribPointer3fv(vColor, 0, NULL);
|
||||
EnableVertexAttribArray(vColor);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableVertexAttribArray(vColor);
|
||||
}
|
||||
if (VertexRenderStruct.data.TexCoordData.size() > 0)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.texCoordVBO->getBuffer());
|
||||
VertexAttribPointer2fv(vTexCoord, 0, NULL);
|
||||
EnableVertexAttribArray(vTexCoord);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisableVertexAttribArray(vTexCoord);
|
||||
}
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, VertexRenderStruct.positionVBO->getBuffer());
|
||||
VertexAttribPointer3fv(vPosition, 0, NULL);
|
||||
EnableVertexAttribArray(vPosition);
|
||||
|
||||
glDrawArrays(GL_TRIANGLES, 0, static_cast<GLsizei>(VertexRenderStruct.data.PositionData.size()));
|
||||
|
||||
}
|
||||
|
||||
void worldToScreenCoordinates(Vector3f objectPos,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user